【问题标题】:In the forms of an inline formset can I customize the field generated by can_delete?在内联表单集的表单中,我可以自定义 can_delete 生成的字段吗?
【发布时间】:2019-03-30 11:01:55
【问题描述】:

在内联表单集的表单中,我可以自定义由 can_delete 生成的字段吗?

我想为字段添加一个类和一个属性,用于前端操作。

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    更新的解决方案

    ## forms.py
    from django import forms
    from django.forms.formsets import formset_factory
    
    ...
    ...
    
    class UserForm(forms.Form):
        sso_id = forms.CharField(widget=forms.TextInput(attrs={'pattern':'[a-z][a-z.]*[a-z]','required':'required'}))
        role = forms.ChoiceField(required=False, choices=[(x,x) for x in ['Admin','Employee']])
    
    UserFormset = formset_factory(UserForm,extra=0,can_delete=True)
    
    ...
    ...
    
    ## views.py
    from .forms import UserFormset
    ...
    ...
    initial_data = [
        {'sso_id':'admin.admin','role':'Admin'},
        {'sso_id':'employee.employee','role':'Employee'},
        {'sso_id':'employee.employeee','role':'Employee'},]
    
    my_formset = UserFormset(initial=initial_data)
    for form,data in zip(my_formset,initial_data):
        if data.get('role',None) == 'Admin':
            form.fields['DELETE'].widget.attrs['class'] = 'Admin'
            form.fields['DELETE'].widget.attrs['readonly'] = False
        else:
            form.fields['DELETE'].widget.attrs['class'] = 'Employee'
            form.fields['DELETE'].widget.attrs['readonly'] = True
    ...
    

    【讨论】:

    • 你在 init 中做这个改变的地方?,你能扩展这个例子
    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 2011-07-03
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多