2017-09-08 29 views
0

最近私のフォームにChoiceFieldを追加しましたが、現在は常に無効です。私はこれを 'print(form.is_valid())'で検証しました。私のテンプレートにはすべてのフィールドが正しく表示され、値は常に渡されているので、フォームが無効として返される理由を判断できません。DjangoフォームはChoiceFieldで常に無効です - 有効な選択肢を選択してください

models.py

class Lead(models.Model): 
    Company_Name = models.CharField(max_length=180, default="No_Name", blank=True) 
    Company_ID = models.BooleanField(default=True) 
    Client_Name = models.CharField(max_length=180, default="No_Name_Provided", blank=True) 
    Client_ID = models.BooleanField(default=True) 
    Advertising = models.BooleanField(default=False) 
    Automotive = models.BooleanField(default=False) 
    Storage = models.BooleanField(default=False) 
    Child_Related = models.BooleanField(default=False) 
    Cleaning = models.BooleanField(default=False) 
    Coffee = models.BooleanField(default=False) 
    Computer = models.BooleanField(default=False) 
    Internet = models.BooleanField(default=False) 
    Dry_Cleaning = models.BooleanField(default=False) 
    Education = models.BooleanField(default=False) 
    Employment = models.BooleanField(default=False) 
    Financial_Services = models.BooleanField(default=False) 
    Fitness = models.BooleanField(default=False) 
    Food = models.BooleanField(default=False) 
    Eco_Friendly = models.BooleanField(default=False) 
    Hair_Care_Beauty_Salon = models.BooleanField(default=False) 
    Health = models.BooleanField(default=False) 
    Nutrition = models.BooleanField(default=False) 
    Home_Services = models.BooleanField(default=False) 
    Maintenance = models.BooleanField(default=False) 
    Management = models.BooleanField(default=False) 
    Training = models.BooleanField(default=False) 
    Miscellaneous = models.BooleanField(default=False) 
    Pack_and_Mail = models.BooleanField(default=False) 
    Pet_Related = models.BooleanField(default=False) 
    Print_Copy = models.BooleanField(default=False) 
    Real_Estate = models.BooleanField(default=False) 
    Repair_Restoration = models.BooleanField(default=False) 
    Retail = models.BooleanField(default=False) 
    Senior_Care = models.BooleanField(default=False) 
    Sports = models.BooleanField(default=False) 
    Tanning_Salon = models.BooleanField(default=False) 
    Travel = models.BooleanField(default=False) 
    Vending = models.BooleanField(default=False) 
    Home_Based = models.BooleanField(default=False) 
    Investment_Level = models.CharField(max_length=2, choices=CATEGORIES, default=CATEGORIES[0]) 

forms.py

class FormForReq(forms.Form): 
    Company_Name = forms.CharField(max_length=180, required=False) 
    Client_Name = forms.CharField(max_length=180, required=False) 
    category = forms.BooleanField(initial=False, required=False) 
    From_Home = forms.BooleanField(initial=False, required=False) 
    Advertising = forms.BooleanField(initial=False, required=False) 
    Automotive = forms.BooleanField(initial=False, required=False) 
    Storage = forms.BooleanField(initial=False, required=False) 
    Child_Related = forms.BooleanField(initial=False, required=False) 
    Cleaning = forms.BooleanField(initial=False, required=False) 
    Coffee = forms.BooleanField(initial=False, required=False) 
    Computer = forms.BooleanField(initial=False, required=False) 
    Internet = forms.BooleanField(initial=False, required=False) 
    Dry_Cleaning = forms.BooleanField(initial=False, required=False) 
    Education = forms.BooleanField(initial=False, required=False) 
    Employment = forms.BooleanField(initial=False, required=False) 
    Financial_Services = forms.BooleanField(initial=False, required=False) 
    Fitness = forms.BooleanField(initial=False, required=False) 
    Food = forms.BooleanField(initial=False, required=False) 
    Eco_Friendly = forms.BooleanField(initial=False, required=False) 
    Hair_Care_Beauty_Salon = forms.BooleanField(initial=False, required=False) 
    Health = forms.BooleanField(initial=False, required=False) 
    Nutrition = forms.BooleanField(initial=False, required=False) 
    Home_Services = forms.BooleanField(initial=False, required=False) 
    Maintenance = forms.BooleanField(initial=False, required=False) 
    Management = forms.BooleanField(initial=False, required=False) 
    Training = forms.BooleanField(initial=False, required=False) 
    Miscellaneous = forms.BooleanField(initial=False, required=False) 
    Pack_and_Mail = forms.BooleanField(initial=False, required=False) 
    Pet_Related = forms.BooleanField(initial=False, required=False) 
    Print_Copy = forms.BooleanField(initial=False, required=False) 
    Real_Estate = forms.BooleanField(initial=False, required=False) 
    Repair_Restoration = forms.BooleanField(initial=False, required=False) 
    Retail = forms.BooleanField(initial=False, required=False) 
    Senior_Care = forms.BooleanField(initial=False, required=False) 
    Sports = forms.BooleanField(initial=False, required=False) 
    Tanning_Salon = forms.BooleanField(initial=False, required=False) 
    Travel = forms.BooleanField(initial=False, required=False) 
    Vending = forms.BooleanField(initial=False, required=False) 
    Home_Based = forms.BooleanField(initial=False, required=False) 
    Investment_Level = forms.ModelChoiceField(queryset=CATEGORIES, required=False) 

これは私がを検索し、結果を引っ張ってアイテムやフォームを作成するためのModelFormを使用してオンラインデータベースです。したがって、私は両方の作業が必要です。

EDIT:

私はそれが無効な選択肢を選択して発見しました。これを修正する方法は?

+0

エラー印刷を行うようにしてください: 'プリント(form.errorsを)'とあなたは私たちにこの問題を解決するのに役立つていない多くのものを示しているものあなたが得る –

+0

投稿私たちが見る必要があるものは除外します。唯一のChoiceFieldはInvestment_Levelなので、ここで見てください。明らかにqueryset = CATEGORIESを使用しているので、そのクエリを作成する方法を調べる必要があります。 – shacker

+0

@JahongirRahmonov私はこれを行い、私の問題を解決しました。ありがとう – Kyris

答えて

0

ModelChoiceFieldは、その選択肢を生成するためにクエリーセットを参照する必要があります。あなたの例では、show:あなたが実際にハードコードされた選択肢を表示するドロップダウンをしたい場合は

Investment_Level = forms.ModelChoiceField(queryset=Foo.objects.all(),) 

:あなたはCATEGORIESが何であるか表示されませんが、一般的にあなたのような何かをするだろう

Investment_Level = forms.ModelChoiceField(queryset=CATEGORIES,) 

定数からは、ModelChoiceFieldではなく、通常のChoiceFieldを使用する必要があります。

0

これはので、私はありません、あなたがいないならアイテム

を作成するためのModelFormを使用してオンラインデータベースです。だからこそあなたは重複したコードと問題を抱えています。実際ModelFormを使用します。

from .models import Lead 

class FormForReq(forms.ModelForm): 
    class Meta: 
     model = Lead 
     fields = '__all__' 
関連する問題