2017-02-23 105 views
0

因此可以說我有兩個字段,分別叫做Member1Member2,這兩個字段都屬於同一個Classtable。用戶將通過ModelForm將值輸入到這兩個字段中。我如何確保這兩個字段不是彼此重複的。這是我目前的驗證代碼:重複表格字段輸入Django

def clean(self): 
    member1 = User.objects.filter(username__iexact=self.Member1.lower()) 
    member2 = User.objects.filter(username__iexact=self.Member2.lower()) 

    if member2 == member3: 
     raise ValidationError("Can't have duplicate team members") 

但它不工作, 任何想法?

View.py

 if request.method == 'POST': 
      form = CreateTeamForm(request.POST, request.FILES) 
      if form.is_valid(): 
       instance = form.save(commit=False) 
       instance.team_creator = request.user.id 
       p2=None 
       p3=None 
       p4=None 
       if instance.team_member2: 
        instance.team_member2 = User.objects.values('id').filter(username=instance.team_member2)[0]['id'] 
        p2 = Profile.objects.get(user_id=instance.team_member2) 
        p2.team_id = instance.Team_ID 
        p2.save() 
       if instance.team_member3: 
        instance.team_member3 = User.objects.values('id').filter(username=instance.team_member3)[0]['id'] 
        p3 = Profile.objects.get(user_id=instance.team_member3) 
        p3.team_id = instance.Team_ID 
        p3.save() 
       if instance.team_member4: 
        instance.team_member4 = User.objects.values('id').filter(username=instance.team_member4)[0]['id'] 
        p4 = Profile.objects.get(user_id=instance.team_member4) 
        p4.team_id = instance.Team_ID 
        p4.save() 

       instance.save() 
+0

你應該把'清潔()'方法形式。你把它放在哪裏? – Rohan

回答

0

您應該cleaned_data財產得到Member1Member2

def clean(self): 
    data = self.cleaned_data 
    member1 = User.objects.filter(username__iexact=data['Member1'].lower()) 
    member2 = User.objects.filter(username__iexact=data['Member2'].lower()) 

    if member1 == member2: 
     raise ValidationError("Can't have duplicate team members") 

    return data 
+0

由於某種原因它說,'團隊'對象沒有'屬性'的清單,'Team'是模型的名稱 – anderish

+0

@AndyXu請顯示視圖的代碼。 – flowfree

+0

我發表的看法 – anderish