问题标签 [django-polymorphic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何从多对多表中检索字段?
我需要从多对多查询中检索一个值。假设我有 3 个模型:Toy、Part 和 ToyParts
ToyParts 有一个名为“part_no”的字段。我需要能够得到这个的价值。
我试过使用:
这显然不起作用,因为 Part 没有名为“part_no”的字段
我也尝试过简单地使用:
但这会增加额外的查询。
part_no
如果不直接查询 ToyParts ,我怎么能得到?
python - 在 Django 中找不到具有多态模型和表单的 updateview 的 URL
当用户单击按钮时,我试图在模式框中显示与另一个模型相关的所有模型。但是,更新视图无法按我希望的方式工作。我收到与基于类的视图(模型对象更新视图)相关的 URL 模式的未找到,而不是 200 OK
我尝试了几种方法,但下面是最新的一种。当我打印出 get_queryset (我已经覆盖)时,我得到了对象。我试图打印上下文 ['formset'],但似乎代码没有达到那么远。
我正在使用django-bootstrap-modal-forms 1.4.2来显示模型表单集,我正在使用django-polymorphic 2.1.2来处理模型的多态性。我使用这种方法的原因是: 1. 模型流和模型对象之间存在多对多的关系。2. 使用模态框可以使界面更简洁,而不是在同一页面上同时拥有模型流和模型对象。3. 我想让多态方法处理与模型流相关的对象。
models.py - 有两个主要模型是多态模型 ModelFlow 和 ModelObject 以及它们的子类。
forms.py - 我创建了基于 WebPageObject 和 LinkObject 的两个表单,它们都继承自 ModelObject(多态模型),然后我创建了一个多态模型表单集。
views.py - 在这个视图中,我使用了 ModelObject(一个多态模型)作为更新视图的模型。然后我创建了一个带有模型/表单对的 form_class
urls.py - 这是更新视图获取的 url。
模板
预期的结果应该是一个模态框,其中所有允许基于上下文 ['formset'] 中的查询集。此外,GET 应该是 200 OK。
但是,我收到此消息:
Not Found: /useCaseExtract/Marvel-E-Store/UCModelUpdate/2/updateModelObject/319/
[15/Sep/2019 12:26:41] "GET /useCaseExtract/Marvel-E-Store/UCModelUpdate/2/updateModelObject/319/ HTTP/1.1" 404 5459
并且没有显示模式框。
django - Django:无法删除损坏的 PolymorphicModel 实例
我在使用django-polymorphic的 Django 项目(托管在 Heroku 上)中有这个模型设置:
问题是,我设法创建了 aProduct
和 a的损坏实例Book
。当我有一个实例Product
,我想将其转换为一个实例时,就会发生这种情况,Book
并且在精神错乱的时刻做了这样一件愚蠢的事情:
现在,我知道这很愚蠢,并且引发了各种错误。我的问题是,现在我遇到了一个p
无法删除的实例。调用时p.delete()
出现以下错误:
此外,如果我尝试做
我犯了同样的错误。如果我创建包含此Book
实例的任何 QuerySet,它也会出现,这是一个问题。
我的问题是:如何规避此问题并删除损坏的实例?
python - Django-PolymorphicModels - 删除实例时出错
这是我第一次尝试“PolymorphicModel”,也许我做错了什么,或者我正在尝试做一些不受支持的事情。有没有办法解决这个问题?
我的简化模型:
如果我创建必要的实例,
所以最后我得到:
完成后,compound_q.delete()
我得到:
我的模型有问题吗?其他一切似乎都按预期工作。谢谢阅读 :)
django - 是否可以为 ForeignKey 关系添加父级到子级?
假设我有一个名为“parent”的 ForeignKey 字段,其 related_name 为“children”:
为什么我只能将孩子添加到父母,但如果我尝试将父母添加到孩子,我会收到错误消息?
所以这有效:
但这不会:
我每次都必须添加到父母的孩子字段吗?有没有办法添加到孩子的父母呢?是否有任何理由为什么添加到孩子的父母不起作用或不应该使用?
在这种情况下(如果相关),我对何时/如何使用“_set”也有些困惑。因此,按照Django 的多对一示例的格式,以下内容也不适用于我:
django - 检查 django 多态模型上是否存在某个多对多外键
因此,为了创建对象模型,我必须首先查看供应商是否具有从 BusinessModel、WarehouseModel 或 StoreModel 到 django 多态的多对多类型关系
我的主要想法是检查通过 BusinessOrderModel 连接到 Order 的 BusinessModel、通过 StoreOrderModel 连接到 Order 的 StoreModel 或直接连接到 Order 的 WarehouseModel 是否具有指向我们想要的文章的多对多关系的 FK通过 POST 请求订购。
这是我的序列化程序:
这是我的观点:
python - 大师班中具有唯一属性的Python继承
我有一个小问题。
CPF = 美国 SSN。
一个人可以是学生,董事会成员,学生将来可以是老师。
当我用cpf注册一个人时,没关系。但是当我尝试将同一个人注册为学生时,由于唯一字段,python 显示错误。我该如何解决这个问题?
形式:
意见:
模板 Student_form:
模板 BoardMember_form:
python - Django 可写嵌套序列化器和 django-polymorphic
假设我有以下模型:
使用以下序列化程序:
我有一个模型,它与一个或一个模型DataQuery
具有 1:1 映射。如果我序列化已经用 a 创建的 a ,我会得到以下(正确的)输出:AnimalEntity
HumanEntity
DataQuery
HumanEntity
POST
对我的端点的调用也有效,DataQuery
并且底层HumanEntity
的创建没有任何问题。
我没有故意id
在内部Entity
序列化程序中包含 an,因为这与此 API 的使用者无关。对他们来说,只需要知道查询可以包含动物或人类。
现在我想更新我的DataQuery
实例并将底层更改HumanEntity
为AnimalEntity
. 因此PUT
,我如下:
而现在,奇怪的事情发生了。没有什么。否AnimalEntity
已创建,并且HumanEntity
也没有更改(如果我HumanEntity
通过输入不同的名称来更改,则名称将正确更改)。似乎可写嵌套DataQuerySerializer
并没有完全理解应该关闭底层实例(即删除旧的,创建新的)。
我在这里逐步浏览了相关代码。由于我不想pk
在嵌套模型序列化程序中包含 a,因此检索了现有pk
的。HumanEntity
不知何故(我想这是由于PolymorphicSerializer
)这是从正确的序列化程序中完成的,AnimalEntitySerializer
. 但是由于传递的字段与底层模型不兼容,所以什么也没有发生。
OneToOneField
如果我通过将 1:1 映射到DataQuery
类似的位置来反转 1:1 映射:
它有点工作,但不是真的。每次我进行更新(即使没有更改任何内容),都会创建一个新的HumanEntity
or AnimalEntity
。但是序列化程序尊重 的变化PUT
并创建正确的模型。(不过,旧的并没有被删除)
我期待什么?
执行 a 时PUT
,我想更新现有实例,或者,如果我决定切换实体的类型,则创建正确的实例并删除另一个实例。我不确定是否on_delete=CASCADE
有任何帮助(无论在哪一边),因为我真正需要的是一个显示If the related field is null, delete myself
.
我完全知道我可以(可能很容易)通过覆盖 的update
方法来解决这个问题DataQuerySerializer
,但是我一开始就不需要了WriteableNestedSerializer
。
也许我忽略了一些东西,任何帮助将不胜感激。
python - 通过使用 Django 多态模型的关系
我正在尝试在模型中使用多态表和非多态表之间的直通关系RankedAthlete
:
这不起作用,因为在我创建一个时RankedAthlete
期望 aChoiceBlank
和 a被提出。ValueError
相反,如果我将选项替换为ChoiceAthlete
.
Django-polymorphic文档没有提到我的用例,它不受支持吗?有没有办法使这项工作?
django - 通过查询或 ORM 访问 Django 多态模型时的不同结果
我已经使用Django 的模型多态性一段时间了,但我突然遇到了一些问题,这让我质疑我对它如何工作的基本理解。
这基本上是我如何设置的。
长话短说,乔布斯可以随身携带数据,目前有两种类型:资格和列表。资格本身可以指向一个列表。
我突然注意到在管理站点中,一个特定的 Qualification 实例没有设置它的目标列表,所以我输入了一些打印语句并发现了这一点。
当我以不同的方式访问明显相同的数据时,我怎么会得到不同的结果?
我的数据库是否损坏或者我缺少一些基本的东西?