因此,我有下面表示的4個實體,這些實體在我的應用程序中是強壯和獨立的實體,現在問題是每個文章或圖片都可以用演示者或事件「標記」他們是其中4個可能變得更加複雜的獨立實體。將事件和演示者字段添加到文章和圖片或相反,特別是因爲它們可能沒有標記,這看起來不正確。
從長遠來看,其他實體可能需要加標籤並可能出現其他可標記的實體。在Django中的通用many2many關係
class Article(models.Model):
#Fields
class Picture(models.Model):
#Fields
class Presenter(models.Model):
# Fields
class Event(models.Model):
# Fields
越接近我得到的是某種雙頭通用的contentType基於中間模型是這樣的(尚未對其進行測試,因爲它是比這更復雜一點),但我期待的想法:
class GenericTag(models.Model):
# Event,Presenter instance..
tagcontent_type = models.ForeignKey(ContentType)
tagobject_id = models.PositiveIntegerField()
tagcontent_object = generic.GenericForeignKey('tagcontent_type', 'tagobject_id')
# Picture,Article instance
objcontent_type = models.ForeignKey(ContentType)
objobject_id = models.PositiveIntegerField()
objcontent_object = generic.GenericForeignKey('objcontent_type', 'objobject_id')
有了這樣只是做根據我掌握的信息查詢,我覺得必須要更優雅的方式來做到這一點沒有餡的所有tagmodels作爲字段爲taggablemodels。
它是多對多關係還是一對多?從你的問題看來,文章或圖片看起來只能有一個演示者和一個事件,但標題上寫着「many2many」。 – 2012-02-07 10:53:14
一張圖片可以有幾個演示者,一個演示者可以在幾張圖片中,文章和事件相同。 – 2012-02-07 10:55:40