我想根据用户信息动态更改django的形式

我想根据用户信息动态更改django的形式,django,Django,虽然它在标题中,但我想用django动态更改表单。 但现在我犯了一个错误。 我应付不了 我能够获得用户信息,但如果我过滤它,它将是“无法解包不可写的UPRM对象” #forms.py 类RecordCreateForm(BaseModelForm): 类元: 模型=URC 字段=('UPRC','URN','UET','URT',) 定义初始化(self,*args,**kwargs): user=kwargs.pop('user') super(RecordCreateForm,self)。\

虽然它在标题中,但我想用django动态更改表单。 但现在我犯了一个错误。 我应付不了

我能够获得用户信息,但如果我过滤它,它将是“无法解包不可写的UPRM对象”

#forms.py
类RecordCreateForm(BaseModelForm):
类元:
模型=URC
字段=('UPRC','URN','UET','URT',)
定义初始化(self,*args,**kwargs):
user=kwargs.pop('user')
super(RecordCreateForm,self)。\uuuuuu init\uuuuu(*args,**kwargs)
对于self.fields.values()中的字段:
field.widget.attrs['class']=“表单控件”
self.fields['URN'].choices=UPRM.objects.filter(user=user)
#views.py
类RecordCreate(CreateView):
模型=URC
form_class=RecordCreateForm
模板名称='records/urcform.html'
success\u url=reverse\u lazy('person:home'))
def get_form_kwargs(自我):
kwargs=super(RecordCreate,self).get_form_kwargs()
#获取用户,注意:您可以使用:self.request访问请求
kwargs['user']=self.request.user
返回kwargs
#模型
UPRM类(models.Model):
user=models.ForeignKey(用户,on_delete=models.CASCADE)
URN=models.CharField(最大长度=30,可编辑=True)
定义(自我):
返回self.URN
类URC(models.Model):
user=models.ForeignKey(用户,on_delete=models.CASCADE)
UPRC=models.CharField(最大长度=300)
URN=models.ForeignKey(UPRM,on_delete=models.CASCADE)
定义(自我):
返回self.UPRC

您应该在此处使用
queryset
而不是
choices

class RecordCreateForm(BaseModelForm):

    class Meta:
        model = URC
        fields = ('UPRC','URN','UET','URT',)

    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user')
        super(RecordCreateForm,self).__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'
        self.fields['URN'].queryset = UPRM.objects.filter(user=user)
类RecordCreateForm(BaseModelForm):
类元:
模型=URC
字段=('UPRC','URN','UET','URT',)
定义初始化(self,*args,**kwargs):
user=kwargs.pop('user')
super(RecordCreateForm,self)。\uuuuuu init\uuuuu(*args,**kwargs)
对于self.fields.values()中的字段:
field.widget.attrs['class']=“表单控件”
self.fields['URN'].queryset=UPRM.objects.filter(user=user)
class RecordCreateForm(BaseModelForm):

    class Meta:
        model = URC
        fields = ('UPRC','URN','UET','URT',)

    def __init__(self, *args, **kwargs):
        user = kwargs.pop('user')
        super(RecordCreateForm,self).__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'
        self.fields['URN'].queryset = UPRM.objects.filter(user=user)