2011-12-19 69 views
-1

我有2種型號Django的表單集問題

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」對象有沒有屬性「

其實我只是想的唯一的選擇性值A級顯示在我的表單中

回答

0

這裏有幾個問題:

首先,__init__方法構成BForm類看起來不對。 user_name是關鍵字參數,但低於您的條件if user,無需在任何地方定義用戶。

其次,在定義formset時,您無法使用user_name參數初始化表單。看起來您正在嘗試執行與堆棧溢出問題Passing Custom Form Parameters to Formset相同的操作。

第三,請提供整個回溯。只有包括回溯的一行,

'BForm' object has no attribute 'name'

就更難追查問題的所在。