好的我是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
答案 0 :(得分:0)
我删除了所有这些代码,只做了两个循环,如此
formset = assignments(initial=[{'UserID': listofUserID[x] } for x in range(len(completeList))])
#then
for form in formset:
form.fields['permissions'].queryset = querysetiwant