私はそれを正しく言い当てることはできませんでしたが、ドキュメントで見つけることはできましたが、新しいオブジェクトを追加する際に、中間の 'スルー'モデルManyToManyField
にどのように追加するのですか? OneToOne
がDjango ManyToManyFieldにオブジェクトを追加するときに、 'trough'中間モデルでフィールドを設定する方法は?
Person_Person
がcurr_partner
分野に関係なく使用されるモデル「通過」(ドキュメントは、それを指定していない)をサポートしている場合、私はわからないだったよう
注は、その再帰的な関係は、私は(これは、ManyToManyFieldがSQLリレーショナルデータベースの出力テーブルの実際のフィールドであるという混乱のためです)ManyToMany
を使用したこと親/子関係のようなオブジェクトを追加する(Person
のフィールドがない)
私のモデルはいくつかのコンテキスト/理論を持っています例えばCALの欠陥が、聞かせてのその抽象今のところ)
Models.py:
class Person(models.Model):
objectid = models.AutoField(primary_key=True)
name = models.CharField()
curr_partner = models.ManyToManyField(
self,
on_delete = models.CASCADE,
through = Person_Person, #This lets you define the model that will act as an intermadiary
symmetrical = False, #This needs to be set with recursive relationships
)
class Person_Person(models.Model):
person_1 = models.ForeignKey(Person, ondelete=models.CASCADE)
person_2 = models.ForeignKey(Person, ondelete=models.CASCADE)
relation = models.ChoiceField(
('P', 'Parent'),
('C', 'Child'),
('E', 'Engaged'),
('W', 'Widow'),
)
問合せ:
#Adding a married couple
father = Person(name = "John")
mother = Person(name = "Anna")
father.curr_partner.add(mother , through.relation = "Engaged") #???
#Adding a 'Child' relation
child = Person(name = "Billy")
#This makes sense??
p1 = Person_Person(person1 = father, person2 = child, relation = "Child")
p2 = Person_Person(person1 = mother, person2 = child, relation = "Child")
感謝を!私は実際にそれをより良い言葉にしようとしていました – Mojimi