0

2 つのモデル クラスがPersonありRelationship、次のように簡潔にするためにフィールドを省略しています。

class Person(models.Model):
    first_name = models.CharField(max_length=32, null=True)
    .
    .
    .
    relationship = models.ManyToManyField('Relationship', related_name='relative')


class Relationship(models.Model):
    person = models.ForeignKey('Person', related_name='relative', null=True)

人物Aが父親で、人物Bが娘だとしましょう。次のように作成します。

personA = Person()
personA.first_name = "Father"
personA.save()

personB = Person()
personB.first_name = "Daughter"
personB.save()

次に、それらの間の関係:

daughterRelationship = Relationship()
daughterRelationship.person = personB
daughterRelationship.save()
personA.relationship.add(daughterRelationship)

fatherRelationship = Relationship()
fatherRelationship.person = personA
fatherRelationship.save()
personB.relationship.add(fatherRelationship)

現在、私のモデルに基づいています (おそらく related_name='relative' が問題を引き起こしている可能性があります) が、逆引き名がわかりません。

私はこれらを試しましたが、役に立ちませんでした:

relationship = Relationship.objects.get(id=1)
personA = relationship.person
personB = relationship.relative_set.all().get() # Relationship does not have attribute 'relative_set'
personB = relationship.person_set.all().get() # Relationship does not have attribute 'person_set'
personB = relationship.relationship_set.all().get() # Relationship does not have attribute 'relationship_set'
personB = relationship.personrelationship_set.all().get() # Relationship does not have attribute 'personrelationship_set'
personB = relationship.personrealtive_set.all().get() # Relationship does not have attribute 'personrelative_set'

私はそれを理解できないようです。他の誰かが何が起こっているのか、または何か提案を見ることができますか? ありがとう。

4

2 に答える 2

1

わかりました、 は の代わりにrelated_name='relative'として逆引きを作成していました。relativerelative_set

relationship = Relationship.objects.get(id=1)
personA = relationship.person
personB = relationship.relative.all().get()
于 2012-12-13T00:12:43.180 に答える
1

この状況は、を介した Person からそれ自体への再帰的な関係により適していると思いますRelationship

于 2012-12-13T00:13:16.353 に答える