允许登录用户仅对建议投票一次(Django)
我在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_
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')