Djangoのドキュメントには、余分なデータをM2Mの関係に関連付ける例があります。それはまっすぐですが、今私は私の意見で余分なデータを利用しようとしているので、それは非常に不器用な感じです(通常は "間違っている"という意味です)。私は一人一人のために、彼らはそれぞれのバンドに参加した日付を与えるという単純な表を印刷したい場合は今djangoの「余分なフィールド」を余分なフィールドとの多対多の関係
# Some people
ringo = Person.objects.create(name="Ringo Starr")
paul = Person.objects.create(name="Paul McCartney")
me = Person.objects.create(name="Me the rock Star")
# Some bands
beatles = Group.objects.create(name="The Beatles")
my_band = Group.objects.create(name="My Imaginary band")
# The Beatles form
m1 = Membership.objects.create(person=ringo, group=beatles,
date_joined=date(1962, 8, 16),
invite_reason= "Needed a new drummer.")
m2 = Membership.objects.create(person=paul, group=beatles,
date_joined=date(1960, 8, 1),
invite_reason= "Wanted to form a band.")
# My Imaginary band forms
m3 = Membership.objects.create(person=me, group=my_band,
date_joined=date(1980, 10, 5),
invite_reason= "Want to be a star.")
m4 = Membership.objects.create(person=paul, group=my_band,
date_joined=date(1980, 10, 5),
invite_reason= "Wanted to form a better band.")
:私は次の操作を行うことができます上記のリンクされたドキュメントで定義されたモデルを使用して例えば
、 、現時点では私はこれをやっている:非常に醜い感じ
bands = Group.objects.all().order_by('name')
for person in Person.objects.all():
print person.name,
for band in bands:
print band.name,
try:
m = person.membership_set.get(group=band.pk)
print m.date_joined,
except:
print 'NA',
print ""
を、特に "M = person.membership_set.get(グループ= band.pk)" ビットを。この全部が間違っているのですか?
私はPerson.objects.all()に置くことができるorder_by節が特定のバンド(ビートルズ)に参加した日までに注文したいと言っています。
アドバイスをいただければ幸いです。
あなたの答えをありがとう。それは私が尋ねた質問にはもちろん答えますが、私は間違った質問をしていることに気付きました。私は問題空間[ここ] [1]を説明するために別の試みをしました。乾杯。 [1]:http://stackoverflow.com/questions/1291889/is-a-many-to-many-relationship-with-extra-fields-the-right-tool-for-my-job – whichhand
レッスン# 2:コメントはマークアップを受け付けません。 – whichhand