如何创建Django OneToMany关系?

时间:2019-01-11 23:46:40

标签: python django foreign-keys

因此,我一直在建立我的第一个网站并将其托管在Heroku上。 该网站的目的是发布挑战,导致产生特定的秘密密钥(有点像非常简单的CTF)。提交密钥后,挑战就解决了。

这是我的models.py文件中的代码

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    """ Each post represents one challenge """
    title = models.CharField(max_length=40)
    text = models.TextField()
    secret_key = models.CharField(max_length=30)
    solved = models.BooleanField(default=False, name='solved')
    file = models.FileField(upload_to='uploads/', null=True, blank=True)
    # solved_by = models.ForeignKey(User, on_delete=models.CASCADE)

    def check_state(self, answer):
        """ Examine whether the challenge was solved """
        if self.secret_key == answer:
            self.solved = True
            self.save()
            return True
        return False

    def __str__(self):
        return self.title

每个帖子基本上都是一个挑战。当有人解决质询/帖子并控制文本是否对用户可见时,solved值将设置为True。现在,当某人解决了挑战时,其他所有人都将得到解决。我希望每个用户都能解决所有挑战,并为每个挑战拥有自己的已解决变量。我尝试使用模型。外键,但是不起作用。我需要什么数据库关系才能完成这项工作?

1 个答案:

答案 0 :(得分:0)

听起来,您需要在Post和User模型之间建立一个多对多UserPost表。

https://docs.djangoproject.com/en/2.1/topics/db/examples/many_to_many/

这样,您可以在每个用户和每个挑战之间建立独特的关系。

仅供参考。尽管我了解您要遵循的描述性方法,但是您可以使用#进行单行注释。