2017-10-05 13 views
0

フォームからデータを取得していません。私は明らかに何かが欠けているが、何がわからない。DjangoフォームAPI - 空白を返すフォーム

I'm following this documentation.

forms.py

class EventRegistrationForm(forms.Form): 
    tags = forms.TextInput() 

    class Meta: 
     model = Event 
     fields = [ 
      'name', 'description', 'type', 'map_pin', 'location_id', 'location_name', 'address1', 
      'address2', 'city', 'state', 'zip', 'country', 'admission_fee', 'free_admission', 'online_ticket_url', 
      'available_parking', 'nearby_transit', 'stream', 'kid_friendly', 'no_underage', 'website_url', 'opportunities' 
     ] 

views.py

def save_event(request): 
    if request.is_ajax() and request.method == "POST": 

     main_form_data = json.loads(request.POST.get('mainForm')) 
     print(main_form_data) 
     main_form = EventRegistrationForm(main_form_data) 
     if main_form.is_valid(): 
      print("Form is incorrectly returning as valid") 
      print(main_form.cleaned_data) 

出力

{'online_ticket_url': '', 'state': '', 'city': '', 'stream': '', 'name': 'Test Subject', 'description': '', 'type': None, 'no_underage': 'on', 'map_pin': '', 'available_parking': '', 'opportunities': '', 'address': '', 'free_admission': 'on', 'kid_friendly': 'on', 'nearby_transit': '', 'tags': '', 'location_name': '', 'admission_fee': '', 'website_url': '', 'zip': '', 'location_id': '', 'country': ''} 
Form is incorrectly returning as valid 
{} 

誰かが私がうまく立ち上がっていないと分かると助けてくれるでしょう。

編集:これは私がシェルで得るものです。

>>> a = EventRegistrationForm({"name":"Adam"}) 
>>> a.is_valid() 
True 
>>> a.cleaned_data 
{} 
+0

私たちにモデルを表示できますか? – zaidfazil

+0

投稿しました –

答えて

0

あなたは何も値が提供されていない場合、フォームが有効戻っている理由です、あなたのモデルにblank=Trueをあなたの分野の多くを定義している:私は、私はこれらが動作するようになっているか誤解と思います。ドキュメントを読むと、blank=Trueは、ModelFormsでフィールドを空白にすることができます。

あなたが、私はそれを解決し、あなたの__init__()方法でオーバーライドし、required=Trueを設定し、

class EventRegistrationForm(forms.Form): 
    tags = forms.TextInput() 

    class Meta: 
     model = Event 
     fields = [ 
      'name', 'description', 'type', 'map_pin', 'location_id', 'location_name', 'address1', 
      'address2', 'city', 'state', 'zip', 'country', 'admission_fee', 'free_admission', 'online_ticket_url', 
      'available_parking', 'nearby_transit', 'stream', 'kid_friendly', 'no_underage', 'website_url', 'opportunities' 
     ] 

    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     for field in self.fields: 
      self.fields[field].required = True 
+0

空の 'description'と空の' type'に少なくとも失敗してはいけませんか?また、それはなぜ私が有効な 'name'を提出したときに、きれいにされたデータを返さないのかを説明していません。フォームは有効ですが、私の 'cleaned_data'には何もありません。 –

+0

あなたが共有したコードを使用してtrueに設定することを試みましたが、問題はまだ起こっています。 –

0

ことができます。何らかの理由で、このフォームはモデルフォーム(forms.ModelForm)の代わりに標準フォーム(forms.Form)を使用して設定されました。したがって、私のフィールドは登録されていません...

class EventRegistrationForm(forms.ModelForm): 
    .... 
関連する問題