2016-04-03 3 views
0

djangoフォームフィールドをレンダリングから除外するにはどうすればよいのですか?</p> <pre><code>class Coupon(models.Model): image = models.ImageField(max_length=64, null=True, upload_to="couponimages") </code></pre> <p>とフォーム(抜粋)::私はモデル(抜粋)している場合

class InsertCoupon(forms.ModelForm): 
    image=forms.ImageField(
     required=False, #note explicitly declared false 
     max_length=64, 
     widget=forms.FileInput() 
     ) 
    class Meta: 
     model=Coupon, 
     exclude = ("image",) 

をそれから私は私が{{ form.as_table }}を行う際に、画像フィールドがまだレンダリングされていることに気づきます。フォームクラスからフィールドの明示的な宣言を削除すると、レンダリングされませんが、フォームの検証とモデルフォームのデータベースへの挿入が簡単に行えます。私はこのフィールド(FileInputは醜いです)のために私自身のウィジェットを使用したいと思います - 私はすべてのhtmlコードを自分自身で作成する必要がありますか、使用する方法はありますかas_table

+1

さて、form.as_tableは使用しないでください。 –

+0

テーブルをレンダリングしてフィールドをレンダリングから除外し、フォームから除外する方法はありませんか? – Escher

答えて

1

だから、テンプレートに1つだけのフィールドを除外するためのより良い方法があるかもしれない:手動ですべてのフィールドを書き出す

<table> 
{% for field in form %} 
    {% if field != "image" %} 
    <tr><td>{{ field }}</td></tr> 
    {% endif %} 
{% endfor %} 
</table> 

ビート。

0

あなたはこのようにてmanualyフォームをレンダリングすることができます

<form action="/your-name/" method="post" enctype="multipart/form-data"> 
    {% csrf_token %} 
    {{ form.field1 }} 
    {{ form.field2 }} 
      . 
      . 
      . 
    <input type="submit" value="Submit" /> 
</form> 

template.html

return render(request, 'template.html', {'form': form}) 

views.pyにもWorking with formsに見てみましょう。