动态覆盖django formset初始数据

overriding django formset initial data dynamically

好的,我是 django 的新手 所以我遇到了一种情况,我希望表单集具有动态初始数据

所以基本上这就是我要找的东西。 表单集中的每个表单都有不同的 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 =[['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' 字段行 58 of formset.py

我试着让这些数据显示在每个表单上并基于用户 它会完全不同,但我尝试覆盖它的所有内容都无法获得初始形式,所以我被困在这里

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

设置 姜戈 = 1.8 python3.5

我删除了所有这些代码并像这样做了两个循环

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