0

我的“事件”对象有一个“名称”字段。名称可能是错误的,因此用户可能会建议一个新名称。该名称被放入事件的“suggestedN”列表中。但是,我不希望该列表中的一个建议重复。我觉得这是一个直截了当的问题,但由于某种原因,我没有取得太大的成功。

这是我目前的看法:

@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)
4

1 回答 1

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)
于 2013-07-16T17:16:24.703 回答