当前位置: 首页 > 知识库问答 >
问题:

筛选manytomanyfield表单'str'对象没有属性'get'

乌鸿宝
2023-03-14

我的模型里有这些课程。派克

class Parent(models.Model):
    title = models.CharField()

class Child(models.Model): 
    title = models.CharField()
    parent = models.ForeignKey(Parent)

class Address(models.Model)
    title = models.CharField()
    parent = models.ForeignKey(Parent)
    child = models.ManyToManyField(Child)

因为我想"子"字段在"地址"模型只显示"子"对象是相关的"父"我写了这段代码到我的forms.py

class AddressForm(forms.ModelForm):

    class Meta:
        model = Address
        fields = ('title', 'parent', 'child')

    def __init__(self, parent_id, *args, **kwargs):
        super(AddressForm, self).__init__(*args, **kwargs)
        self.fields['child'].queryset = Child.objects.filter(parent__id=parent_id)

意见。派克

def address(request, parent_id):
    parent = get_object_or_404(Parent, id=parent_id)
    if request.method == 'POST':
        form = AddressForm(request.POST, parent_id)
        if form.is_valid():
            address = form.save(commit=False)
            address.parent = parent
            address.save()
            return redirect('app:address_added')
    else:
        form = AddressForm(parent_id)
    template = "add_address.html"
    context = {'form': form}
    return render(request, template, context)

结果:子字段仅显示与请求的父对象相关的子对象。这正是我想要的。

问题:当我提交我得到这个错误:

位于/manage/add_address/'str'对象的AttributeError没有属性'get'

回溯

文件"/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/exception.py"在内部39。

文件"/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py"在_get_response187。

文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/django/core/handlers/base.py”位于_get_response 185中。响应=包装的回调(请求,*回调参数,**回调参数

文件“/Users/Developer/Desktop/Projects/******/***/views.py”,位于add_地址167中。如果形式。_是否有效():

文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/django/forms/forms.py”在169中有效。回归自我。被束缚而不是自我。错误

文件"/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/forms/forms.py"错误161.self.full_clean()

完整的“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/django/forms/forms.py”文件。自我_清除字段()

_clean_fields文件/库/框架/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/forms/forms.py。value=field.widget.value_from_datadict(self.data,self.files,self.add_prefix(名称))

文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/django/forms/widgets.py”,其值为来自数据字典427的值。upload=super(ClearableFileInput,self)。来自数据目录的值(数据、文件、名称)

文件“/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site packages/django/forms/widgets.py”,其值为来自数据目录354的值。返回文件。获取(名称)

异常类型:AttributeError位于/manage/add\u地址/异常值:“str”对象没有属性“get”

请帮忙?

共有1个答案

田冥夜
2023-03-14

您已经将parent\u id作为表单的第一个位置参数,因此应该在POST块中这样传递它:

form = AddressForm(parent_id, request.POST)

请注意,最好不要更改表单的签名,而是使用kwargs:

def __init__(self, *args, **kwargs):
    parent_id = kwargs.pop('parent_id', None)
    super(AddressForm, self).__init__(*args, **kwargs)

并且做:

form = AddressForm(request.POST, parent_id=parent_id)

在邮政区和

form = AddressForm(parent_id=parent_id)

在其他地方。

 类似资料:
  • 问题内容: 为什么被认为是物体?返回列表中的第一项,但我不能追加到列表中的第一项。谢谢。 Edit01: @pyfunc:谢谢您的解释;现在我明白了。 我需要一个清单清单。因此“来自表单”应为列表。我做到了(如果这不是正确的方法,请更正): 问题答案: myList [1]是myList的元素,其类型是字符串。 myList [1]是str,您不能附加它。myList是一个列表,您应该已经附加了它

  • 问题内容: 有点困惑,因为我很肯定我以前曾经做过这项工作。 我创建了以下方法… 但是当我在导入的CSV文件上运行它时,会产生此错误: 尽管我可以看到这是文档中的一个属性: https://pandas.pydata.org/pandas- docs/stable/generation/pandas.Series.str.isnumeric.html?highlight=isnumeric#pand

  • 问题内容: 我正在尝试使用SQLAlchemy + Python将一个项目添加到我的数据库中,但始终出现错误。 我的database_setup.py: 在将sqlalchemy导入到终端后,我定义了一个要插入的项目: 并绘制一个会话以添加和提交: 当我提交时,我不断收到此错误: 我在我的公司表中添加了一个“ Jawbone”对象,我理解我的“ JawboneUP3”应该与之相关。该对象是通过我通

  • 问题内容: 我正在尝试过滤出包含产品列表的数据框。但是,我遇到了熊猫-每当我运行代码时,“ dataframe”对象都没有属性“ str”错误。 这是代码行: 如果有人有任何建议的想法,请告诉我。我已经搜索了很多次,而且非常困惑。 产品是对象数据类型。 编辑: 这是头: 编辑2:这是print(data),A是产品。当我将其打印出来时,看起来好像A不在类别产品下。 问题答案: 答案很简单: 改变成

  • 问题内容: 我在python 3.3.4中遇到“解码”方法的问题。这是我的代码: 但是我无法解码此问题的代码: 你有什么想法?谢谢 问题答案: 一种 编码 字符串,另一种 解码 字节。 您应该从文件中读取字节并对其进行解码: 幸运的是,有一个编码参数使操作变得简单: