2012-05-06 7 views

答えて

2

異なるフォームをユーザーに表示する場合は、別のModelForm(または単にフォーム)が必要です。

class FormWithoutFormField(RegularForm): 
    class Meta: 
     exclude = ('field_name',) 

これは、表示したい新しいフォームの内部に入る:この形式は、次のようになります。使用していた他のフォームも拡張していることに注意してください。これですべてのことがそのまま維持されるはずです。必要のないフィールドを除外することができます。

次に、ユーザーがビューのどこかにログインしているかどうかを確認する必要があります。あなたはDjangoのadminまたはカスタムテンプレートのためにそれが必要な場合は説明しなかった

if request.user.is_authenticated(): 
    form_class = FormWithoutFileField 
else: 
    form_class = RegularForm 
# Do whatever you did with the normal form, but now with the new form. 
1

:それは、のようなものです。カスタムテンプレート/ビューの場合は、別のフォームは必要ありません。テンプレートでこれを行うだけです。あなたはおよそhandling static filesジャンゴで読んだことを提供

<div id="blah"> 
    {% if user.is_authenticated %} 
     <a href="{{ somemodel.somefilefield.url }}">Download the file</a> 
    {% else %} 
     <p>No downloading for you!</p> 
    {% endif %} 
</div>