我需要建立一對一的關係,它也必須是通用的。也許你可以給我一個更好的設計建議。到目前爲止,我想出了以下型號Django中的通用一對一關係
class Event(models.Model):
# skip event related fields...
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
class Meta:
unique_together = ('content_type', 'object_id')
class Action1(models.Model):
# skip action1 related fields...
events = generic.GenericRelation(Event, content_type_field='content_type', object_id_field='object_id')
@property
def event(self):
return self.events.get() # <<<<<< Is this reasonable?
class Action2(models.Model):...
在Django管理在事件列表我要收集所有的行動,並從那裏我想要去管理頁面進行操作。是否有可能避免在動作模型中創建event
屬性?有更好的解決方案嗎?在單個定義中將字段events
和屬性event
組合起來會很好。我正在使用的項目使用Django 1.1
如果您確實想避免'events',則需要手動將查詢實現到'Event'表,如下所示。我仍然希望將'events'作爲GenericRelation,然後在'event'屬性中使用'self.events.first()'。此外,這將更容易讓您在未來消除獨特的限制。 – alexcasalboni