Django 表单集问题

发布于 2024-12-22 01:53:35 字数 810 浏览 1 评论 0原文

我有 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”对象没有属性“名称

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

I have 2 models

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)

I am getting following error

'BForm' object has no attribute 'name'

Actually i only want only selective value of class A to shown in my formset

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

享受孤独 2024-12-29 01:53:35

这里存在一些问题:

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

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

第三,请提供完整的回溯。仅包含一行回溯,

'BForm' 对象没有属性 'name'

使得更难追踪问题所在。

There are a few issues here:

Firstly, the __init__ method form the BForm class looks wrong. user_name is a keyword argument, but below you have the condition if user, without defining user anywhere.

Secondly, you can't initialise the form with the user_name argument when defining the formset. It looks like you are trying to do the same as in the stack overflow question Passing Custom Form Parameters to Formset.

Thirdly, please supply the entire traceback. Only including one line of the traceback,

'BForm' object has no attribute 'name'

makes it harder to track down where the problem is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文