2017-09-11 67 views
1

我在對稱關係的模型:Django,如何使自我與額外領域之間的對稱關係?

class person(models.Model): 
    name = models.CharField(max_length=20) 
    friends = models.ManyToManyField('self', blank= True) 

我需要一個額外的領域來解釋他們的關係, 例如:他們是朋友自1980年以來

be_friend_since = models.DateField(blank = True) 

如何增加這額外的在我的模型領域? 謝謝! :)

+1

使用一個新的'Relationship'模式,即作爲中間表(用'through'關鍵字)作爲朋友人與人之間。見例如https://stackoverflow.com/questions/4443190/djangos-manytomany-relationship-with-additional-fields – Evert

回答

1

必須使用through表,包括該領域,如:

class Person(models.Model): 
    name = models.CharField(max_length=20) 
    friends = models.ManyToManyField('self', through='Friendship', blank=True) 

class Friendship(models.Model): 
    person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='+') 
    friend = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='+') 
    friends_since = models.DateField(blank=True) 
相關問題