gpt4 book ai didi

django - 如何通过模型编写与 self 具有多对多关系的 Django 模型

转载 作者:行者123 更新时间:2023-12-04 00:45:30 24 4
gpt4 key购买 nike

我想要一个带有 ManyToMany 的模型与自身的关系,我不知道如何写这个,但我会尝试编写一些代码来说明我想要做什么。

class Person(models.Model):
name = models.CharField()
occupation = models.CharField()

friends = models.ManyToManyField('self', through = PersonFriends)

我想让 friend 们通过的模型
class PersonFriends(models.Model)
???
comment = models.CharField()

ManyToMany例如,如果另一个模型的名称是“宠物”,我将通过类命名我的字段 personpet并使它们成为模型。 ForeignKey(Person)Pet例如

我该取什么名字 fields在我的 PersonFriends既然它们是相同的模型,那么它们的模型是什么?

最佳答案

你可以这样做:

class Person(models.Model):
name = models.CharField(max_length = 255)
occupation = models.CharField(max_length = 255)
friends = models.ManyToManyField('self', through = 'PersonFriends',
symmetrical = False)
# ^^^^^^^^^^^
# This has to be false when using `through` models. Or else your
# model will not validate.

class PersonFriends(models.Model):
source = models.ForeignKey(Person, related_name = 'source')
# ^^^^^^^^^^^^
# You need different `related_name` for each when you have
# multiple foreign keys to the same table.

target = models.ForeignKey(Person, related_name = 'target')
comment = models.CharField(max_length = 255)

关于django - 如何通过模型编写与 self 具有多对多关系的 Django 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com