2017-09-11 10 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) 

ので、友人もこの余分なを追加する方法私のモデルのフィールド? ありがとう! :)あなたのような、そのフィールドを含めるようにthroughテーブルを使用する必要があります

+1

友情のために( 'through'キーワードとの)中間テーブルとしての役割を果たす新しい' Relationship'モデルを使用します人と人との間。例えばhttps://stackoverflow.com/questions/4443190/djangos-manytomany-relationship-with-additional-fieldsを参照してください。 – Evert

答えて

1

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) 
関連する問題