gpt4 book ai didi

django-models - Django 中的抽象模型和外键

转载 作者:行者123 更新时间:2023-12-04 01:52:32 28 4
gpt4 key购买 nike

我正在开发一个 django 项目,在该项目中我创建了一组三个抽象模型,稍后将用于各种应用程序。我遇到的问题是我想通过 ForeignKey 连接这些模型,但 django 告诉我它不能将外键分配给抽象模型。

我当前的解决方案是在其他应用程序中实例化类时分配外键。但是,我现在正在为抽象类(书籍和页面)编写一个管理器,并且需要访问这些外键。我基本上要做的是以无状态方式获取一本书的字数,因此无需将其存储在页面或书籍的字段中。

该模型看起来类似于:

class Book(models.Models):
name = models.CharField(...)
author = models.CharField(...)
...

class Meta:
abstract = True

class Page(models.Models):
book = models.ForeignKey(Book)
chapter = models.CharField(...)
...

class Meta:
abstract = True

class Word(models.Models):
page = models.ForeignKey(Page)
line = models.IntegerField(...)
...

class Meta:
abstract = True

请注意,这里的这个模型只是举例说明我正在尝试做的事情,因此不需要从实现的角度来看这个模型(Book-Page-Word)是否有意义。

最佳答案

也许你需要的是一个 GenericForeignKey ,因为您实际上并不知道您的 ForeignKey 是什么型号s会指向?这意味着您将失去正常关系的一些“类型安全”保证,但它允许您以更通用的方式指定这些关系。见 https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#django.contrib.contenttypes.generic.GenericForeignKey

Django 模型继承是一件很酷的事情,并且作为使您的模型干燥的捷径很好,但并不总是与我们通常拥有的类的多态想法很好地配合。

关于django-models - Django 中的抽象模型和外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532749/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com