2012-05-06 2 views

답변

2

다른 양식을 사용자에게 표시하려면 다른 ModelForm (또는 양식)이 필요합니다.

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

이 표시 할 새로운 형태의 내부 간다 :이 양식은 다음과 같이 될 것이다. 사용중인 다른 양식을 확장한다는 점에 유의하십시오. 이렇게하면 모든 것을 그대로 유지해야하며 원치 않는 필드는 제외시킬 수 있습니다.

그런 다음 사용자가보기에 로그인되어 있는지 확인해야합니다. 즉, 다음과 같은 것입니다 :

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

당신은 장고 관리자 또는 사용자 정의 템플릿을 필요로하는지 설명하지 않았습니다. 사용자 정의 템플릿 /보기의 경우 다른 양식이 필요하지 않습니다. 템플릿에서이 작업을 수행하십시오.

<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> 

는 약 handling static files 장고에서 읽은 것을 제공.