问题标签 [generic-foreign-key]
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.
django - 为什么删除时我的 GenericForeignKey 不会级联?
我正在创建一个自定义评论系统,它可以使用内容类型 GenericForeignKey 将评论附加到任何模型。
据我了解,当评论附加到的模型被删除时,删除也应该级联并删除评论。
不幸的是,这没有发生,我很难过。默认删除行为会改变是否有任何常见原因?
django - 在 Django/South HOWTO 中,在 DataMigration 期间从不同的应用程序创建模型的实例
我需要在应用程序Question中执行模型Answer的数据迁移。在该脚本中有一个依赖项,因此我需要在应用程序Journal中创建模型Chapter的实例。因此,我将其编码如下:
但正如预期的那样,这会在“ orm['journal.Chapter'].objects.get_or_create(content_object=blog)” 上引发错误,说
这可能是由于 content_object 是 GenericForeignKey,因此不允许某些操作。但我也尝试了其他替代方法来创建“章节”对象,例如,
和
那么我哪里错了?任何指针表示赞赏。谢谢。
更新
因此,由于我之前的方法失败了,我尝试了一种新的策略。在上面的代码中实例化失败的模型,即Journal应用程序中的章节,我决定为此创建一个数据迁移。我还确定了我在定义中所指的模型。现在这应该是直截了当的,我想。我的转发代码如下 ---freeze
forwards
我会认为现在因为我正在创建主题应用程序(Journal )中存在的模型( Chapter )的实例,所以一切都应该解决。但我得到了同样的错误。
它在同一点失败,即“content_object”。如果可能有帮助,我将在模型定义下方发布。
更新 2 想补充一点,这些转发方法中涉及的所有模型,即 - 博客、章节、问题;在 South 的 schemamigration 创建的 00n_*.py 文件中完全定义。
django - django GenericForeignkey 不适用于 object.create() 但适用于 save()
我正在尝试将我的数据库从 postgres 迁移到 mysql。下面是一个模型Customdata。
当我使用下面的代码片段创建条目时,我遇到了一个问题,即 GenericForeignKey 字段“引用”没有得到更新。休息每个值都很好。
但是在创建之后,如果我执行更新,则会保存该值。
我不知道为什么“引用”字段没有使用 create 保存,但在再次更新后工作正常。此代码用于与 postgres 一起正常工作。
django - 是否可以在 Django 中为 GenericForeignKey 使用自然键?
我有以下内容:
我希望 dumpdata --natural 为这种关系发出一个自然键。这可能吗?如果没有,是否有另一种策略不会将我与目标的主键联系起来?
database - 构建期间未分配 Django 通用外键字段,但可以在构建后分配
我对 Django 通用外键有一个奇怪的问题,如果我使用构造函数分配它,通用字段将不会粘住。它只会在施工后坚持。我找不到有关此的任何信息,因此我正在为此创建一个新问题。任何想法为什么会发生这种情况?
下面是我的课
这是我的 shell 会话,它演示了这个问题:
django - django:如何根据 GenericForeignKey 的字段进行查询?
我是使用 GenericForeignKey 的新手,我无法让它在查询语句中工作。表格大致如下:
扫描创建一个问题,一个问题生成一些票,我将问题作为票表的外键。现在我有一个 Scan 对象,我想查询与此扫描相关的所有票证。我首先尝试了这个:
这是行不通的。然后我尝试了这个:
还是不行。我需要知道如何在 django 中进行此类查询?谢谢。
django - Django 删除 GenericForeignKey
我正在尝试按照本教程实施活动提要。
当相应的对象(即评论本身)已被删除时,我想删除一个活动(即已添加评论)。这似乎没有级联。
有没有办法在不添加 GenericRelation 的情况下实现这一点?可以使用 postdelete 信号删除相应的活动。这是最好的方法吗?
django - 用于多个数据库的 Django GenericTabularInline
我一直在尝试使 GenericTabularInline 类在两个管理员的两个数据库设置中工作,方法是从它继承并覆盖 BaseModelAdmin 类中的一些方法,就像在 Django 文档中所做的那样(https://docs.djangoproject.com /en/dev/topics/db/multi-db/),但是如果以内联形式编辑子模型,它总是写入默认数据库(我希望第二个管理员专门处理辅助数据库,模型是两者都一样),所以我不能重写某些方法或做错事。这是我到目前为止的课程:
任何帮助或提示表示赞赏。
django - django:预取 GenericForeignKey 的相关对象
假设我有一个模型Box
,GenericForeignKey
它指向一个Apple
实例或一个Chocolate
实例。Apple
和Chocolate
又分别具有到Farm
和Factory
的外键。我想显示一个Box
es 列表,为此我需要访问Farm
和Factory
. 如何在尽可能少的数据库查询中做到这一点?
最小的说明性示例:
这是我尝试过的几件事。在所有这些示例中,N是 Box 的数量。查询计数假定ContentType
sApple
和Chocolate
已经被缓存,因此get_for_model()
调用不会命中数据库。
1)天真:
print [box for box in Box.objects.all()]
这会执行1(获取 Boxes)+ N(为每个 Box 获取 Apple 或 Chocolate)+ N(为每个 Apple 获取 Farm,为每个 Chocolate 获取 Factory)查询。
2)select_related
在这里没有帮助,因为Box.content_object
是GenericForeignKey
.
3) 从 django 1.4 开始,prefetch_related
可以 fetch GenericForeignKey
s。
print [box for box in Box.objects.prefetch_related('content_object').all()]
这会执行1(获取盒子)+ 2(获取所有盒子的苹果和巧克力)+ N(获取每个苹果的农场和每个巧克力的工厂)查询。
4) 显然prefetch_related
不够聪明,无法遵循 GenericForeignKeys 的 ForeignKeys。如果我尝试:
print [box for box in Box.objects.prefetch_related(
'content_object__farm',
'content_object__factory').all()]
它正确地抱怨Chocolate
对象没有farm
字段,反之亦然。
5)我可以这样做:
这将执行1(获取盒子)+ 2(获取所有盒子的苹果和巧克力)+ 2(获取所有苹果的农场和所有巧克力的工厂)查询。缺点是我必须手动合并和排序两个查询集( boxes_with_apples
, )。boxes_with_chocolates
在我的实际应用程序中,我在分页的 ModelAdmin 中显示这些框。如何在此处集成此解决方案并不明显。也许我可以编写一个自定义分页器来透明地进行缓存?
6)我可以基于此拼凑一些也可以进行 O(1) 查询的东西。_content_object_cache
但是,如果可以避免的话,我宁愿不要弄乱内部( )。
总而言之:打印一个 Box 需要访问 GenericForeignKey 的 ForeignKeys。如何在 O(1) 查询中打印 N 个框?(5) 是我能做的最好的,还是有更简单的解决方案?
加分项:您将如何重构此 DB 模式以使此类查询更容易?
django - Django - 如何在通用外键中引用特定类型?
我创建了一个通用外键,以便能够以通用方式引用 Report 模型中的任何类型(A 或 B)模型。
它工作正常,但我的问题是现在,我需要进行查询以检索所有引用特定类型模型的报告实例(例如,所有具有引用类 A 的外键的报告)。我试图访问数据库中的 content_type 但显然不可能(变量不存在......)
这是我的模型:
你知道怎么做吗?
以防万一它会改变任何东西,我使用 mongoDB 作为我的数据库。
非常感谢!
编辑:
当我在数据库中显示报告对象时,结果如下:
如您所见,数据库的内容与我的模型没有任何相似之处,所以我不知道如何进行查询以获取所有具有外键 A 的报告。
您能帮帮我吗?