Django模型继承创建或从父级获取

Mo J.Mughrabi

我正在尝试构建一个项目,并且看来满足我的要求使用模型继承可以达到最佳效果,我有一个基本模型,其中有多个模型可以将其用于继承。在基本模型中,我有一个slug字段,该字段在所有字段中都是唯一的(出于完整性考虑)

在我的子模型中,有时我想创建一条记录,但是如果已经有一个父项,我只想创建子项并直接链接到父项。例如,

class Base(models.Model):
   slug = models.SlugField(_('Slug'), unique=True)
   #Other fiels

class ChildA(Base):
   height = models.CharField(max_length=100, )

class ChildB(Base):
   is_for_sale = models.BooleanField(_('Is active'), default=True, )

# when creating ChildA, it will automtically insert into base model as well
ChildA.objects.create(slug='bmw', height='11')

# now for childB, I want the newly created object to link to an existing record in Base where slug
# is the unique value, is it possible todo such a thing?
ChildB.objects.create(slug='bmw', is_for_sale=True)
埃尔奇博士

我认为您现在可能对继承有误解。

如果我做对了,您会说应该是唯一的。因此,您将具有一定限制的类的数量限制为“ 1”

您的ClassChildBChildA不是“链接”到BaseClassBaseClass的后代,而是BaseClass的后代,因此,子实例也是的实例BaseClass

在我看来,您似乎正在寻找一个Slug对象与其他多个具有不同属性的对象之间的关系。

与其尝试从Class Base派生,不如建议这样的关系:

class ChildA(models.Model):
   height = models.CharField(max_length=100, )
   slug = ForeignKey(Base)

这将确保将使用正确的Slug对象,并且不会再次创建它。

如果您需要保留该继承行,请保留您的基类,但将slug字段提取到其自己的类中,例如

class Slug(models.Model):
 slug = models.SlugField(_('Slug'), unique=True)

class Base(models.Model):
  # all your other fields
  slug = ForeignKey(Slug)

class ChildA(Base):
   height = models.CharField(max_length=100, )
class ChildB(Base):
   is_for_sale = models.BooleanField(_('Is active'), default=True, )

来到这里后,您可以使用这些类的构造函数对Slug实施进一步的限制(如果尚未提供的话)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

无法从父级继承表格属性

来自分类Dev

从父级移除不透明度的继承?

来自分类Dev

ExtJS:从父级获取商店属性

来自分类Dev

SVG不会从父级继承值

来自分类Dev

从特定提交中获取更改,而从父级获取更改

来自分类Dev

Postgres表继承:从父级移到子级,反之亦然

来自分类Dev

在从父级继承的伪元素上禁用CSS动画

来自分类Dev

django模型:获取刚创建的模型的主键

来自分类Dev

django模型继承:模型创建如何与Custom Manager一起使用?

来自分类Dev

如何创建从父字段继承的对象的实例?

来自分类Dev

从父级继承后,pyqt5布局问题

来自分类Dev

从父级对应项获取子级元素的数据

来自分类Dev

从父创建方法中创建嵌套模型

来自分类Dev

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

来自分类Dev

类继承,将Ruby中的类类型从父级更改为子级

来自分类Dev

Django模型继承

来自分类Dev

SVG不会从父级继承值

来自分类Dev

Django:从父模型类获取相关模型类

来自分类Dev

PHP / SQL不会从父级获取所有子级

来自分类Dev

新创建的目录从父级继承组权限

来自分类Dev

CakePHP从父级更新子级模型

来自分类Dev

Laravel模型继承-如何从父模型调用函数?

来自分类Dev

获取从父级到创建响应的日期

来自分类Dev

仅从父级跨度获取元素

来自分类Dev

从父级的 iframe 获取innerText

来自分类Dev

允许 JavaScript 闭包从父级范围继承变量

来自分类Dev

从父级或最近的 Div 获取数据值

来自分类Dev

规则 Firestore,从父级获取资源?