2013-07-16 2 views
0

У моего объекта «Событие» есть поле «Имя». Существует вероятность, что имя неверно, поэтому пользователь может предложить новое имя. Это имя попадает в список «предлагаемых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

извините, удалил мой ответ, так как я ошибочно путают, что customEvent с классом RecommendedName, тем самым предоставляя вам неправильный ответ. –

ответ

1

Вы должны использовать имя атрибута на M2M не сам 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) 
Смежные вопросы