Python 在Django中定义模型

Python 在Django中定义模型,python,sql,django,Python,Sql,Django,我是Django的新手,我正在尝试创建一个简单的应用程序 我基本上想创建类似StackOverflow的东西,我有很多用户和很多问题。我不知道该如何定义这两个模型之间的关系 我的要求: 我希望每个问题都有一个作者用户,以及问题后面的用户列表 我希望每个用户都有一个问题列表和一个问题列表 我几乎迷路了,我不知道如何定义我的关系。这是一种多对多的关系吗?如果是这样,我如何在我的用户模型中发布/遵循两个问题列表 请帮忙 一个非常基本的入门模式: models.py 这是一个非常基本的入门模式: mod

我是Django的新手,我正在尝试创建一个简单的应用程序

我基本上想创建类似StackOverflow的东西,我有很多用户和很多问题。我不知道该如何定义这两个模型之间的关系

我的要求:

我希望每个问题都有一个作者用户,以及问题后面的用户列表

我希望每个用户都有一个问题列表和一个问题列表

我几乎迷路了,我不知道如何定义我的关系。这是一种多对多的关系吗?如果是这样,我如何在我的用户模型中发布/遵循两个问题列表


请帮忙

一个非常基本的入门模式:

models.py


这是一个非常基本的入门模式:

models.py


要做到这一点,我建议打破每一个人的关系。你的关系似乎是:

创作 下列的 对于创作,详细信息如下:

每个问题都由一个用户编写 每个用户都可以提出许多问题 因此,这是两者之间的一对多关系。最好的方法是将问题的外键发送给用户,因为只有一个作者

详情如下:

每个问题可以有许多以下用户 每个用户都可以关注许多问题 因此,这是一种多对多关系。Django中的多对多字段是实现这一点的最佳选择。Django允许您通过另一个模型使用一个字段,但在这种情况下,这是不需要的,因为您没有与用户关注某个问题(例如个人分数/排名)相关的其他信息


使用这两种关系,Django将为您创建相关项目的列表,因此您不必担心这一点。您可能需要为此字段定义一个相关的名称,因为有多个用户与一个问题关联,默认情况下django将为两个命名的用户设置相关的集合。

为此,我建议分解每个单独的关系。你的关系似乎是:

创作 下列的 对于创作,详细信息如下:

每个问题都由一个用户编写 每个用户都可以提出许多问题 因此,这是两者之间的一对多关系。最好的方法是将问题的外键发送给用户,因为只有一个作者

详情如下:

每个问题可以有许多以下用户 每个用户都可以关注许多问题 因此,这是一种多对多关系。Django中的多对多字段是实现这一点的最佳选择。Django允许您通过另一个模型使用一个字段,但在这种情况下,这是不需要的,因为您没有与用户关注某个问题(例如个人分数/排名)相关的其他信息


使用这两种关系,Django将为您创建相关项目的列表,因此您不必担心这一点。您可能需要为此字段定义一个相关的\u名称,因为有多个用户与一个问题关联,默认情况下django将为两个命名的用户\u集创建相关集。

我建议删除以下模型,并为用户模型定义一个ManyToManyField。这允许使用许多方便的方法,例如Question.followers.adduser。您可以在文档中的主题中阅读更多内容。我建议删除以下模型,并为用户模型定义一个ManyToManyField。这允许使用许多方便的方法,例如Question.followers.adduser。您可以在文档中的主题中阅读更多内容。因此,基本上,我会对用户的外键和用户的ManyToManyField提出疑问?@user3772883是的,这也是我的建议。类似这样的问题:User=models.ForeignKeyUser userfollowered=models.manyFieldUserYes,虽然您可能需要在多对多字段中使用相关的_名称,以便django不要对您大喊大叫。虽然如果你可以不使用syncdb就运行syncdb,那么你不用它就可以了所以基本上,我会对用户的外键和用户的ManyToManyField产生疑问?@user3772883是的,这也是我的建议。类似这样的问题:User=models.ForeignKeyUser userfollowered=models.ManyToManyFieldUseryes,虽然您可能需要在多对多字段中使用相关的_名称,以便django不要对您大喊大叫。不过,如果您可以在不使用syncdb的情况下运行syncdb,那么您没有它也很好
from django.db import models
from django.contrib.auth.models import User

class Question(models.Model):
    question = models.CharField(max_length=200)
    user = models.ForeignKey(User)

    def __unicode__(self):
        return self.question

class Following(models.Model):
    question = models.ForeignKey(Question)
    user = models.ForeignKey(User)