2013-04-13 89 views
1

我正在建立一个使用userena的个人资料和注册部分的网站。问题是我正在尝试从编辑个人资料页面中删除mugshot上传部分和个人资料隐私(已注册,打开,关闭),以便userena只使用gravatar,并且个人资料对所有人都是公开的。但在模板中有刚django-userena删除照片

<fieldset> 
    <legend>{% trans "Edit Profile" %}</legend> 
    {{ form.as_p }} 
    </fieldset> 
    <input type="submit" value="{% trans "Save changes" %}" /> 
    </form> 

我试图找出如何编辑此或意见,从形式,但没有成功去除面部照片和个人隐私。请帮忙?

回答

1

最好的办法是通过编辑窗体本身来删除这两个字段。

class EditProfileForm(forms.ModelForm): 
... 
    class Meta: 
     model = get_profile_model() 
     exclude = ['user', 'mugshot', 'privacy'] 

如果你真的想只更改模板,您可以通过迭代:在userena包的view.py,只需加入“面部照片”和“隐私”的排除列表改变EditProfileForm形式而不是使用form.as_p。在这种情况下,您必须为其他字段参数(如标签,错误,非字段错误等)添加标记 - 请参阅示例a here

{% for field in form %} 
    {% if field.name != 'mugshot' %} 
     {{ field }} 
    {% endif %} 
{% endfor %} 
2

而不是编辑userena形式直接则应子在你自己的forms.py文件中提到FAQ,并把上述网址的userena包括(例如账户/ forms.py)。下面是一个例子,我用脆皮形式子类很好的引导形式编辑个人资料表格:

账户/ forms.py

class EditProfileFormExtra(EditProfileForm): 
    class Meta: 
     model = get_profile_model() 
     exclude = ['user', 'mugshot', 'privacy', 'my_custom_field'] 

    def __init__(self, *args, **kwargs): 
     super(EditProfileFormExtra, self).__init__(*args, **kwargs) 
     self.helper = FormHelper() 
     self.helper.form_id = 'edit-profile-form' 
     self.helper.form_class = 'form-horizontal' 
     self.helper.form_method = 'post' 
     self.helper.help_text_inline = True 
     self.helper.add_input(Submit('submit', _('Save'), css_class='green')) 
     self.helper.layout = Layout(
      Field('first_name', placeholder=_("First Name")), 
      Field('last_name', placeholder=_("Last Name")), 
      Field('language', css_class="chosen"), 
      Field('timezone', css_class="chosen"), 
     ) 

账户/ urls.py

urlpatterns = patterns(
    '', 
    url(r'^signup/$', 'userena.views.signup', {'signup_form': SignupFormExtra}, name='signup'), 
    url(r'^signin/$', 'userena.views.signin', {'auth_form': SigninFormExtra}, name='signin'), 
    url(r'^(?P<username>[\.\w-]+)/edit/$', 'userena.views.profile_edit', {'edit_profile_form': EditProfileFormExtra}, name='edit-profile'), 
    url(r'^', include('userena.urls')), 
) 

你可以用任何形式做到这一点,你可以在上面的网址中看到。基本上它说在这个URL,使用原始模块视图,但用我自己的形式替换窗体参数。