2017-02-23 19 views
0

Member1Member2という2つのフィールドがあり、両方とも同じClassまたはtableに属しているとしましょう。ユーザはModelFormを介してこれらの2つのフィールドに値を入力します。これらの2つのフィールドが互いに重複していないようにするにはどうすればよいですか。重複したフォームフィールド入力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

何らかの理由で「チーム」オブジェクトに「cleaned_data」属性がなく、「チーム」モデル名が – anderish

+0

です@AndyXuビューのコードを表示してください。 – flowfree

+0

私はビュー – anderish

関連する問題