我有2个模特
class A(models.Model):
id=models.AutoField(primary_key=True)
name=models.CharField(max_length=200)
class B(models.Model):
id=models.AutoField(primary_key=True)
user=models.ForeignKey(A)
name=models.CharField(max_length=200)
#forms.py
class BForm(ModelForm):
class Meta:
model=B
fields=('name','user')
def __init__(self,user_name,*args,**kwargs):
super(BForm,self).__init__(*args,**kwargs)
if user_name:
self.field['user']=forms.ModelChoiceField(queryset=A.objects.filter(name__icontains=user_name)
#views.py
def myview(request,user_name):
formset=formset_factory(BForm(user_name=user_name),extra=10)
我收到以下错误
'BForm'对象没有属性' name '
实际上我只希望在我的formset中显示A类的选择性值
答案 0 :(得分:0)
这里有一些问题:
首先,__init__
类的BForm
方法看起来不对。 user_name
是一个关键字参数,但在下面您的条件为if user
,而无需在任何地方定义用户。
其次,在定义formset时,不能使用user_name
参数初始化表单。看起来您正在尝试执行与堆栈溢出问题Passing Custom Form Parameters to Formset中相同的操作。
第三,请提供整个追溯。只包括一行追溯,
'BForm' object has no attribute 'name'
让追踪问题的位置变得更加困难。