2013-07-16 27 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與suggestedName類,從而爲您提供了一個不正確的答案。 –

回答

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) 
相關問題