django formset问题

时间:2011-12-19 16:28:40

标签: django django-forms formset

我有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类的选择性值

1 个答案:

答案 0 :(得分:0)

这里有一些问题:

首先,__init__类的BForm方法看起来不对。 user_name是一个关键字参数,但在下面您的条件为if user,而无需在任何地方定义用户。

其次,在定义formset时,不能使用user_name参数初始化表单。看起来您正在尝试执行与堆栈溢出问题Passing Custom Form Parameters to Formset中相同的操作。

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

'BForm' object has no attribute 'name'

让追踪问题的位置变得更加困难。