我在Django中開發的模型有點複雜。基本的想法是,網站上的用戶可以給予獎勵,但我也想跟蹤用戶與獲獎者之間的關係。用戶可以給同一個人多個獎項,但他們之間只有一個關係。該機型是這個樣子(用戶是標準AUTH_USER模型):管理員在線編輯Django中的多對多關係
class Recipient(models.Model):
name = models.CharField(max_length=255)
senders = models.ManyToManyField(User, through='Relationship')
class Relationship(models.Model):
user = models.ForeignKey(User)
recipient = models.ForeignKey(Recipient)
relationship = models.CharField(max_length=255, blank=True, default='')
class Meta:
unique_together = (('user', 'recipient'),)
class Award(models.Model):
recipient = models.ForeignKey(Recipient)
user = models.ForeignKey(User)
relationship = models.ForeignKey(Relationship)
award_name = models.CharField(max_length=255)
在管理我有這樣的事情
class RelationshipInline(admin.StackedInline):
model = Relationship
class AwardAdmin(admin.ModelAdmin):
inlines = [RelationshipInline]
exclude = ['relationship']
admin.site.register(Recipient)
admin.site.register(Award, AwardAdmin)
當我嘗試在管理我的錯誤加獎「< class'Relationship'>沒有ForeignKey到< class'Award'>」。我意識到這是因爲當我編輯Award時,Django不知道哪個關係應該被內聯編輯,但實際上對於具有相同用戶/接收者對的人來說顯而易見(對於人)。我無法指定Relationship中的用戶/收件人是關鍵字,因爲Django不支持多列鍵(所以我只能將它們指定爲unique_together)。同樣,我無法指定Award中的用戶/收件人是多列外鍵給Relationship。
有沒有什麼辦法讓我在這裏得到什麼?如果在管理員中與獎勵有多對一關係,則必須單獨編輯關係,這似乎是一個巨大的不便。有沒有更好的方法來組織模型?
非常感謝。收件人不必是註冊網站用戶,因此它不會消除該模型的工作,但我想我會覆蓋save方法來改善這一點。 – sagittarian