问题标签 [django-inheritance]

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.

0 投票
2 回答
670 浏览

python - 在 django 中为继承的字段添加索引

我有许多需要时间戳和缓存控制的模型,因此继承自我正在使用TimeTrackablelck.djangomixin 库。

但是,由于某种原因,其中定义的createdmodified字段TimeTrackable没有被索引,即使同一个 mixin 库中的许多其他字段都被索引,并且我根据模型在不同程度上使用基于这些字段的排序,并且希望索引一个或两个它们在我的 postgres 数据库中。(我对这些字段上的索引并不是我真正需要的想法持开放态度,但我认为这是一个非常明确的索引用例。)

我的理解是,由于 Django 继承模型中的怪癖,如果我只是尝试用同名字段加上索引覆盖这些字段,系统将尝试创建两个同名字段并阻塞syncdb.

有什么好的方法来索引它们吗?我能想到几个选择:

  • 将代码复制/粘贴TimeTrackable到我的应用程序中(不是 DRY,但至少后果是可预测的)
  • south在迁移或同步数据库钩子或其他东西中添加单独的索引步骤(看起来很脆弱,并且对于试图通过查看应用程序代码来判断哪些列被索引的人感到困惑,因为某些列确实在模型文件中明确索引)
  • 应用程序初始化后在 postgres 中手动索引它(我必须将此应用程序交给客户端,所以我想尽量减少手动部署步骤)
  • 以某种方式使用/滥用“一起索引”元字段来索引单个字段而不是其预期用途(不知道这样做的后果是什么,如果我尝试一下)

有没有其他好的方法可以做到这一点?

0 投票
1 回答
2053 浏览

django - 为两种类型的用户在 Django 中为 AbstractUser 子类化

我正在用 Django 1.5 开发一个学校数据库系统,并计划拥有许多不同的用户类型(学生、员工、家长),这些用户类型是 AbstractUser 的子类(实际上是 AbstractUser 的另一个抽象子类)。我只是试图将一个外部开发的应用程序添加到我的系统中,该应用程序在其某些模型中使用外键中的用户,但是,由于我的用户类型不是“用户”实例,因此失败了。我无法将应用程序模型设置为使用 AbstractUser,因为不能将抽象类用于外键。然后我正在考虑添加到我的 settings.pyAUTH_USER_MODEL = 'myapp.MyUser'并使用 settings.AUTH_USER_MODEL 代替 User 作为应用程序中的 ForeignKey。但是,我有 3 种不同的用户类型,所以也不能这样做。

早期的原型使用 Django 1.4,它不支持自定义 User 模型,因此有一个对 User 的引用,但这需要对每个查询进行额外的连接,这导致了相当复杂的查询。这是我可以继续前进的唯一方法,还是有其他解决方案?

0 投票
1 回答
325 浏览

django - 为 django 1.5 选择正确的用户继承方法

我有一种情况,我需要为 django 1.5 项目子类化自定义用户模型(相关问题/背景:Subclassing AbstractUser in Django for two types of users

我需要一个抽象的用户类SchoolPerson和一些基于此的子类( , 等)StudentTeacher我想我已经解决了我需要将用户模型放在一个单独的数据库表中,因为其他应用程序依赖于 AUTH_USER_MODEL,其中只能有一个。

SchoolPerson所以我看到它的方式,我必须选择这样做:在我的抽象类中添加一对一的标准用户模型:

或者我可以让我的SchoolPerson模型继承 AbstractUser,但保持这个类是非抽象的:

其中一个比另一个有什么优势吗?

0 投票
1 回答
1081 浏览

python - django - 使用外键进行多表继承

我在我的数据库设计中陷入了一个奇怪的位置,我将不胜感激。我们正在使用 django-shop 作为电子商务平台。为产品定义了一个基类:

我们为自己的Product对象扩展了这个基类:

我们现在要创建另一个对象,表示对该Product对象的报价,例如:

我们希望将此 Offer对象添加到购物车中,并在订单中使用,就像常规Product类一样。然而,CartOrder需要类型的对象Product

因此,我们不能将Offer对象添加到购物车,或将它们保存在订单中。

我也在考虑创建Offer一个子类Product,但不是在典型的多表继承中使用 OneToOne 关系,而是以某种方式将其更改为常规 ForeignKey。我什至不确定这是否有意义,更不用说可能了。

我们的数据库已经部署在生产环境中,包含许多Product对象,而这个 offer 类是我们想要在上面添加的东西,而不需要修改其余部分。

关于如何解决这个问题的任何想法?

0 投票
1 回答
2272 浏览

python - Django admin.ModelAdmin 继承

是否可以从 Django创建子admin.ModelAdmin类?

我正在尝试做类似的事情:

但我无法让它工作:u"Key 'address' not found in Form"尝试访问 PlacePageAdmin 表单页面时出现错误。

有人做过这样的事吗?

非常感谢您!

编辑 - 表格代码:

0 投票
1 回答
898 浏览

django - 在django中通过关键字查询模型继承中的父级多对多

我有以下问题:

我的模型设置类似于以下场景

(我曾经将 Membership 作为一个抽象类,但这不会让我查询基类。)我现在想查询例如尚未为特定用户验证的所有成员资格。我可以

这给了我所有已验证 = False 的成员资格列表。但是,我找不到任何方法来 1) 检查成员资格是哪个子类,以及 2) 即使我知道子类类型,我也无法访问“俱乐部”或“论坛”字段。在我查询了基类之后,无论如何访问基类类型,以及如何访问子类字段?

0 投票
3 回答
4854 浏览

django - 在 django 中保存后对象的 id 为无

我正在遍历对象列表并保存。我需要在保存后立即生成新生成的 id 或指针 id,但它是无。

这是我的代码:

这会在例程运行后保存我的对象,但同样不会在这一行给我 id。

这是我的模型:

类别列表是这样创建的:

我究竟做错了什么?

0 投票
0 回答
131 浏览

django - Django父类模型实例缺少关联的子模型

我有一些这样的 Django 模型:

所以想法是,当我们有一个 Parent 类型的实例时,我们可以通过使用 class_type 属性找出关联的子类并获取子类的实例。这多年来一直运行良好,但在过去的几周里,我一直看到 parent.get() 抛出异常的间歇性错误,因为没有关联的子类。确切的错误消息是“Parent has no child1”。代码中没有我创建原始 Parent 实例的地方。最近几周我将 Django 从 1.3 升级到 1.6,但我不确定这会如何破坏这段代码。

我有一个想法,也许查询在中途失败,因此数据库正在创建父记录,而没有机会完成创建子记录。所以我用@transaction.atomic 包装了创建子类​​的视图,但这似乎并没有解决问题。

这只是偶尔发生,但当它发生时,它会破坏我的用户网络应用程序。

0 投票
1 回答
463 浏览

django - Django中的部分模型继承

我有一个模型用作参考点来创建另一个模型:

不想继承该destroying_planets领域,这可能吗?
我特别问,因为在父亲模型destroying_planets中应该是强制性的,但我想在子模型中让它是可选的。
这可以通过其他方式实现吗?

0 投票
1 回答
53 浏览

django - Django - 如果模型仅继承以更改管理器,它是否需要自己的表?

我已经阅读了这个线程,它处理使 Django 注释在“用户”字段上使用 select_related() 从而减少不必要的 sql 查询的问题。

我最喜欢的建议是创建自己的评论模型并覆盖当前使用的管理器。

这就是我所拥有的:

这一切都很好,但是当我同步数据库时,Django 仍然为 LightComment 创建一个表。如果我要更改的只是经理,我真的需要这张表吗?如果 managed 设置为 false,为什么 Django 会创建它?

提前致谢,