Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 多对多字段-django模型-理解_Python_Database_Django_Database Design_Many To Many - Fatal编程技术网

Python 多对多字段-django模型-理解

Python 多对多字段-django模型-理解,python,database,django,database-design,many-to-many,Python,Database,Django,Database Design,Many To Many,我正在尝试实施一个小项目,其中一个人可以添加另一个人作为朋友 我想在数据库中对这种关系进行建模:我想,我将做另一个名为友谊的模型,我将这样编写它的模型: class friendship(models.Model): friend = models.ManyToManyField(User) 就这些吗?我不知怎的陷入了逻辑,不知道如何设计这个。。我看了医生,但不知怎么的,我没说到点子上,有人能帮我一下吗 非常感谢除非您需要存储有关关系的额外信息,否则不需要创建其他模型。例如,它已经定义了基

我正在尝试实施一个小项目,其中一个人可以添加另一个人作为朋友

我想在数据库中对这种关系进行建模:我想,我将做另一个名为
友谊
的模型,我将这样编写它的模型:

class friendship(models.Model):
  friend = models.ManyToManyField(User)
就这些吗?我不知怎的陷入了逻辑,不知道如何设计这个。。我看了医生,但不知怎么的,我没说到点子上,有人能帮我一下吗


非常感谢

除非您需要存储有关关系的额外信息,否则不需要创建其他模型。例如,它已经定义了基本关系:

class User(models.Model):
  ...
  friends = models.ManyToManyField(self) # self means User.
如果你想储存额外的信息,比如哪种朋友,他们有多亲密。 那么你需要一个额外的模型

class User(models.Model):
    ...
    friends = models.ManyToManyField(self, through='Friendship')


class Friendship(models.Model):
    from_user = models.ForeignKey(User, related_name="from_user")
    to_user = models.ForeignKey(User, related_name="to_user")
    friend_type = models.CharField(max_length=255)
    friend_rated = models.FloatField()

除非需要存储关于关系的额外信息,否则不需要创建另一个模型。例如,它已经定义了基本关系:

class User(models.Model):
  ...
  friends = models.ManyToManyField(self) # self means User.
如果你想储存额外的信息,比如哪种朋友,他们有多亲密。 那么你需要一个额外的模型

class User(models.Model):
    ...
    friends = models.ManyToManyField(self, through='Friendship')


class Friendship(models.Model):
    from_user = models.ForeignKey(User, related_name="from_user")
    to_user = models.ForeignKey(User, related_name="to_user")
    friend_type = models.CharField(max_length=255)
    friend_rated = models.FloatField()

看看这与使用外键而不是使用多人关系有何不同?是因为Freindship模型包含Foriengkeys吗?这与使用Foreignkey而不是使用多个关系有何不同?是因为Freindship模型包含Foriengkeys吗?