Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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
允许登录用户仅对建议投票一次(Django)_Django_Django Models - Fatal编程技术网

允许登录用户仅对建议投票一次(Django)

允许登录用户仅对建议投票一次(Django),django,django-models,Django,Django Models,我在Django网站上有两个模型。一个事件和该事件的建议名称,以防我提供的可能不是最好的。我希望每个用户只能对每个建议投票一次。他们必须登录才能这样做,所以我知道他们是谁。有没有线索告诉我该如何将其添加到这些模型中 class Event(models.Model): def __unicode__(self): return self.title event_id = models.BigIntegerField(blank = 'TRUE', primary_

我在Django网站上有两个模型。一个事件和该事件的建议名称,以防我提供的可能不是最好的。我希望每个用户只能对每个建议投票一次。他们必须登录才能这样做,所以我知道他们是谁。有没有线索告诉我该如何将其添加到这些模型中

class Event(models.Model):
    def __unicode__(self):
        return self.title
    event_id = models.BigIntegerField(blank = 'TRUE', primary_key='TRUE')
    title = models.CharField(max_length=200, blank = 'TRUE')
    start = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    end = models.CharField(max_length=200,blank = 'TRUE', null = 'TRUE')
    location = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    tags = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    url = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    suggested = models.ManyToManyField('suggestedName', blank = 'TRUE', null = 'TRUE') 

class suggestedName(models.Model):
    def __unicode__(self):
        return self.name
    name = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    votes = models.IntegerField(default = 0)

一个简单的方法可能是在代码中处理它

保存前,检查对象是否存在于
manytomy
字段中

您可以通过我在模型中想到的两种方法之一来实现:

创建一个引用
用户
的新表,其中包含
建议
事件

在上具有唯一的属性


我使用ManyToMany的原因是一个事件可以有多个建议。然后用户对它们进行投票。在这种情况下,我应该选择后一个选项吗?是的,但是你将它限制为每个用户一个建议。我建议这样做。请确保您已仔细考虑了实施过程。这是基于我对您的要求的理解,将每个用户限制为只有一个建议是完全合理的。如果你要提出建议,你就要提出你最好的主意。这实际上是我还没有考虑过的额外奖励。一个建议,每个建议投一票只是稍微修改了答案。也许这更适合你的需要。幸运的是,我尝试同步时出错了。“'user'与尚未安装或抽象的模型用户有关系。”。我希望它链接到用户(Django提供的实现)还是配置文件(我创建的模型)
class Event(models.Model):
    def __unicode__(self):
        return self.title
    event_id = models.BigIntegerField(blank = 'TRUE', primary_key='TRUE')
    title = models.CharField(max_length=200, blank = 'TRUE')
    start = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    end = models.CharField(max_length=200,blank = 'TRUE', null = 'TRUE')
    location = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    tags = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    url = models.CharField(max_length=200, blank = 'TRUE', null = 'TRUE')
    suggested = models.ManyToManyField('suggestedName', blank = 'TRUE', null = 'TRUE', through='EventSuggestion')

class EventSuggestion(models.Model):
    #through table attributes
    event = models.ForeignKey(Event)
    suggestion = models.ForeignKey(suggestedName)
    user = models.ForeignKey('User')

    class Meta:
        unique_together = ('event', 'suggestion', 'user')