-1

我有 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 '

实际上我只希望在我的表单集中显示 A 类的选择性值

4

1 回答 1

0

这里有几个问题:

首先,类的__init__方法BForm看起来是错误的。user_name是一个关键字参数,但在下面你有条件if user,没有在任何地方定义用户。

其次,在定义表单集时,您不能使用user_name参数初始化表单。看起来您正在尝试与堆栈溢出问题将自定义表单参数传递给 Formset中的相同。

第三,请提供整个追溯。只包括一行回溯,

'BForm' object has no attribute 'name'

使追查问题所在变得更加困难。

于 2011-12-19T16:42:52.610 回答