动态覆盖django formset初始数据

时间:2017-12-27 20:35:36

标签: django django-forms django-rest-framework python-3.5 django-1.8

好的我是django的新手 所以我有一种情况,我希望formset有动态初始数据

所以基本上这就是我正在寻找的东西。 formset中的每个表单都有不同的UserID 和一组可以根据初始数据选择的组权限

这是我的表格

class assignGroupPermissionToUser(forms.ModelForm):
    UserID = forms.ModelChoiceField(queryset=None)
    Groups = forms.ModelMultipleCHoiceField(queryset=None, widget=FilteredSelectMultiple("Groups")
class Meta:
    model=User
def __init__(self,*args,**kwargs):
    super().__init__(*args,**kwargs)
    Userid = kwargs.pop("UserID")
    self.fields['UserID'].queryset =User.objects.get(UserID=Userid)
    Permissions = kwargs.pop("Groups")
    listofPermission = None
    for each perm in permission:
        listofPermission |= Permissions.objects.filter(GroupID=perm)
    self.fields['Groups'].queryset = listofPermission

我要传递的数据被内置到这样的列表中

它被称为 completeList

> completeList =[['13452',{'group1':'Admin','group2':'FrontDesk'}],['3532','group1':'Supervisors','group2':'ReadOnly;}]]

其中每个嵌套循环中的第一个值是UserID,字典是他们可以选择的组。

在View.py

中覆盖方法
....
form = assignGroupPermissionToUser()
assignment = formset_factory(form,extra=0)
formset = [ assignment.__init__(completeList[x][0],completeList[x][1]) for x in range(len(completeList))]

然后我得到一个错误,str对象没有' is_bound' formset.py的第58行

我尝试将这些数据显示在每个表单上并基于用户 它会有所不同,但我试图覆盖它的一切都因初始形式而失败,所以在这里我被困住了

请注意,modelform中的Group属性有一个小部件,在admin部分中用于从多个选项中进行过滤。

设置 Django = 1.8 python 3.5

1 个答案:

答案 0 :(得分:0)

我删除了所有这些代码,只做了两个循环,如此

formset = assignments(initial=[{'UserID': listofUserID[x] } for x in range(len(completeList))])
#then
for form in formset:
    form.fields['permissions'].queryset = querysetiwant