2010-12-18 12 views
0

リスト名が特定のユーザーに固有であることを確認しようとしています。ここに私の見解である:Djangoでフォームの検証にインスタンスデータを使用するにはどうすればよいですか?

list = List(user=user) 
    new_list_form = ListForm(request.POST, instance=list) 
    if new_list_form.is_valid(): 
     new_list_form.save() 

そして、ここでのタイトル(リストの名前)きれいにバリです:

def clean_title(self): 
     title = self.cleaned_data['title'] 
     if List.objects.get(user=user, title=title): 
      raise forms.ValidationError("List title must be unique.") 
     return title 

動作しません'ListForm' object has no attribute 'user'

どのようにすることができますので、 clean_title関数から "instance = list"で与えられたユーザ変数にアクセスしますか?

答えて

3

ModelForm(instance=)に渡されるオブジェクトは、ModelForm().instanceに格納されます。ユーザーがタイトルを再利用しようとした場合、フォームが検証に失敗する

class List(models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField() 

    class Meta: 
     unique_together = (("user", "title"),) 

if List.objects.get(user=self.instance.user, title=title): 
0

またはあなたのモデルのメタクラスのunique_together属性を使用してみてください。

関連する問題