我的“事件”对象有一个“名称”字段。名称有可能是错误的,因此用户可能会建议新名称。该名称将被放入事件的“建议N”列表中。但是,我不希望在该列表中有一个重复的建议。我觉得这是一个直截了当的问题,但由于某些原因我没有取得多大成功。
以下是我目前的观点:
@login_required
def suggestName(request):
name = request.POST['name'].strip()
event_id = request.POST['event_id']
try:
e = Event.objects.get(event_id = event_id)
except Event.DoesNotExist:
e = customEvent.objects.get(event_id = event_id)
if name in e.suggestedN.all():
pass
else:
(some code)
我的if name in e.suggestedN.all()
声明错了吗?
以下是我的活动模型的简要视图:
class Event(models.Model):
def __unicode__(self):
return self.title
suggestedN = 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)
答案 0 :(得分:1)
您应该使用m2m上的name属性而不是m2m本身进行比较
@login_required
def suggestName(request):
name = request.POST['name'].strip()
event_id = request.POST['event_id']
try:
e = Event.objects.get(event_id = event_id)
except Event.DoesNotExist:
e = customEvent.objects.get(event_id = event_id)
if name in e.suggestedN.values_list('name', flat=True):
pass
else:
(some code)