如何创建 Django 的一对多关系?

3

我正在制作我的第一个网站,并将其托管在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

每个帖子基本上都是一项挑战。当有人解决了挑战/帖子时,解决的值被设置为True,并且还控制着文本是否对用户可见。目前,当有人解决一个挑战时,它被视为已解决,对于其他所有人也是如此。我希望每个用户都能解决每个挑战,并且对于每个挑战都有自己的已解决变量。我尝试使用models.ForeignKey,但它不起作用。我需要什么样的数据库关系才能使其正常工作?


做得好,你解释得很清楚,分享了你的代码和目标。不过要注意,你可能因为这个问题而被踩票。 - Kermit
为什么呢?以前从来没有人问过这个问题。 - Costas Vassilopoulos
你真的认为在一个编程论坛里没有人问过不同模型关系类型的问题吗? - Kermit
是的,你说得对。声称这样的事情有点傻。不管怎样,你会如何建议我提出这个问题,以避免被踩? - Costas Vassilopoulos
1个回答

1
听起来你需要在帖子(Post)和用户(User)模型之间建立一个多对多的用户帖子(UserPost)表。

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

那样,您可以在每个用户和每个挑战之间建立独特的关系。
顺便说一下,您可以使用#进行单行注释,尽管我理解您试图遵循的描述性方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接