我的模型里有这些课程。派克
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”
请帮忙?
您已经将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中遇到“解码”方法的问题。这是我的代码: 但是我无法解码此问题的代码: 你有什么想法?谢谢 问题答案: 一种 编码 字符串,另一种 解码 字节。 您应该从文件中读取字节并对其进行解码: 幸运的是,有一个编码参数使操作变得简单: