首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在尝试内联模型时,<class>在Django中没有<class>的外键

在Django中,如果您尝试在一个模型中使用内联模型,并且遇到了没有外键的问题,可能是因为您没有正确地定义外键关系。

首先,请确保您的模型中定义了外键关系。例如,如果您有两个模型,一个是Author,另一个是Book,并且每个Book都有一个Author,那么您可以在Book模型中定义一个外键关系,如下所示:

代码语言:python
代码运行次数:0
复制
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

在这个例子中,Book模型中的author字段是一个外键,它引用了Author模型。

接下来,您可以使用内联模型来在Django管理界面中一次性创建和更新相关的对象。例如,您可以在admin.py文件中定义一个内联模型,如下所示:

代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from .models import Author, Book

class BookInline(admin.TabularInline):  # 或者使用 admin.StackedInline
    model = Book

class AuthorAdmin(admin.ModelAdmin):
    inlines = [BookInline]

admin.site.register(Author, AuthorAdmin)

在这个例子中,我们创建了一个名为BookInline的内联模型,它将Book模型与Author模型进行了关联。然后,我们在AuthorAdmin类中将BookInline添加到了内联关系中,并将AuthorAdmin注册到了Django管理界面。

现在,当您在Django管理界面中创建或更新Author对象时,您将能够一次性创建或更新与之相关的Book对象。

请注意,如果您在尝试内联模型时遇到了其他问题,可能需要检查您的模型定义或内联模型定义是否正确。如果您需要进一步的帮助,请提供更多详细信息,以便我们能够更好地帮助您。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 1.8 官方文档翻译: 2-5-6 多数据库

当保存在statement 2中发生时,p已经具有一个主键,Django 将尝试在新的数据库上使用该主键。...在第一个站点上,Author 和 Publisher 对象被暴露出来;Publisher 对象具有一个表格的内联,显示该出版社出版的书籍。第二个站点只暴露Publishers,而没有内联。...如果你使用一个路由来路由分离到不同的数据库上,这些模型定义的任何外键和多对多关联必须在单个数据库的内部。 这是因为引用完整性的原因。...然而,如果你正在使用SQLite 或MySQL的MyISAM 表,则没有强制性的引用完整性;结果是你可以‘伪造’跨数据库的外键。但是Django 官方不支持这种配置。...另外,一些对象在migrate在数据库中创建一张表后自动创建: 一个默认的Site, 为每个模型创建一个ContentType(包括没有存储在同一个数据库中的模型), 为每个模型创建3个Permission

1.5K20

从 Django 模型中根据类查找外键

在 Django 中,如果你有一个模型类,并希望找出哪些其他模型定义了指向该模型的外键,可以使用 Django 的元选项 (Meta) 和 ForeignKey 的反向关系属性。...1、问题背景在使用 Django 开发项目时,我们经常需要在不同的模型之间建立外键关系。...例如,我们可能有一个 Author 模型和一个 Book 模型,其中 Book 模型的外键指向 Author 模型。在不同的模型中,外键的名称可能不同。...例如,在 Book 模型中,外键可能叫做 author_id, 而在 Article 模型中,外键可能叫做 author.我们希望有一个方法可以根据外键的类来检索外键对象,无论外键的名称是什么。...该方法返回了指向 Author 模型的外键字段,并将其存储在 author_foreign_key 变量中。问题背景Foo 有很多可以从 Django 模型引用的外键,但我希望使用通用方法来获取对象。

8810
  • 37.Django1.11.6文档

    它会生成一个复杂的查询并引起性能的损耗,但是在以后使用外键关系时将不需要数据库查询。...此方法将返回当前活动的用户模型 — 如果指定了自定义用户模型,否则返回User。 在定义到用户模型的外键或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。 ...这是必需的。 InlineModelAdmin.fk_name 模型上的外键的名称。 在大多数情况下,这将自动处理,但如果同一父模型有多个外键,则必须显式指定fk_name。...覆盖此方法以编程方式确定最小内联表单数。 例如,这可以基于模型实例(作为关键字参数obj传递)。 使用具有两个或多个外键的模型与同一个父模型 有时可能有多个外键到同一个模型。 ...请注意,使用此技术时,不会触发m2m_changed信号。 这是因为,就管理而言,through只是一个具有两个外键字段而不是多对多关系的模型。

    24.4K80

    Django 3.1 官网学习路线

    字段还可以有各种可选参数;在本例中,我们将投票的默认值设置为 0。 最后,请注意使用外键定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外键字段名。(是的,你也可以重写这个。) 外键关系是通过外键约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 在事务结束之前不要强制执行外键。...OK migrate 命令获取所有还没有应用的迁移(Django 跟踪哪些迁移是使用数据库中名为 django_migrations 的特殊表应用的),并在数据库上运行它们——本质上,就是将您对模型所做的更改与数据库中的模式同步...“添加选择”表单如下所示: 在该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个外键应该在管理中表示为一个框。在我们的例子中,目前只存在一个问题。

    8.2K10

    Django3.0新鲜出炉!全面解读新特性,ASGI真香实锤,不来了解一下?

    Python兼容性 Django虽然之前没有支持异步开发,但是在Python版本支持方面,它一向是比谁都积极,从Django 2.0版本刚推出开始,官方就已经宣布停止对Python 2.X版本的支持了,...models.ForeignKey('Room', on_delete=models.CASCADE) # 级联外键 timespan = DateTimeRangeField() # 新建两个字段...模型字段选择的枚举 在之前的Django版本,我们在model的field字段需要枚举的时候通常需要这么做 from django.utils.translation import gettext_lazy...中没有特定的枚举字段,需要我们手动去指定,而在Django 3.0中,自定义枚举类型TextChoices,IntegerChoices和Choices现在作为一个的方式来定义Field.choices...表格 表单集可以通过can_order设置ordering_widget属性或覆盖来控制在订购表单时使用的小部件。

    2.7K10

    Django3.2边学边记—Adimn站点管理

    控制显示的列,Django 会尝试按照这个顺序解释 list_display 的每个元素: 一个模型的字段。 一个可调用对象。 一个代表 ModelAdmin 属性的字符串。...atitle.short_description='标题'   如果是更改模型字段显示的列标题,可以在定义模型字段时,设置verbose_name的值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...None,一个空字符串,或者一个没有元素的可迭代字段,Django 将显示 - (破折号)。   ...,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括外键字段(注意list_display是不能直接接收外键字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段...12 class TestAdmin(admin.ModelAdmin):    search_fields = ['id','name'] 在搜索框中进行搜索时,Django 会将搜索查询拆分成多个词

    1.3K30

    Django安装及简单使用1.5

    你可以在项目的 settings.py 中的 INSTALLED_APPS 看到它: NSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth...登录后效果 为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin。比如,我们之前在 TestModel 中已经创建了模型 Test 。...里面的 fields 属性定义了要显示的字段。 由于该类对应的是 Contact 数据模型,我们在注册的时候,需要将它们一起注册。显示效果如下: ?...image.png 内联(Inline)显示 上面的 Contact 是 Tag 的外部键,所以有外部参考的关系。 而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。...我们可以使用内联显示,让 Tag 附加在 Contact 的编辑页面上显示。

    95570

    Django模型

    Django模型 Django的模型定义在models.py文件中。模型是MVT中的M,也相当于MVC中的M。 在Django中,模型必须继承自Model类。...外键 外键这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的外键约束。在这里只是简单的介绍一下。...外键:通过使用models.ForeignKey来设置外键,ForeignKey的第一个参数是要关联的模型类名,第二个参数是on_delete。...它的常用值可以如下: CASCADE级联,删除主表数据时连通一起删除外键表中数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据 SET_NULL设置为NULL...,此选项会抛出IntegrityError异常 注意:我们在数据库中,设置外键的时候需要制定另一张表中关联的字段,但是在Django里并没有指定。

    1.9K20

    Django外键模型未保存引用

    在 Django 中使用外键关系时,如果遇到模型未保存引用的问题,通常是因为在创建或更新相关对象时,有关联对象未被正确保存或引用。这里提供一些常见的问题和解决方案来确保你的外键关系正确处理。...1、问题背景在使用 Django 进行模型开发时,遇到一个问题,外键模型无法保存引用。...具体来说,UserProfile 模型的外键引用 Customer 模型,在保存 UserProfile 模型时,引用关系丢失。...这种方式会导致外键引用丢失,因为在保存 UserProfile 模型时,u 还没有被保存,因此引用关系无法建立。正确的做法是先保存 UserProfile 模型,然后再保存用户模型 u。...通过注意这些常见问题和采取正确的操作步骤,可以确保 Django 中的外键关系被正确处理,避免数据一致性和完整性问题。

    6010

    Django项目知识点(三)

    注意:Django在一个模型中只允许有一个自增字段,并且该字段必须为主键!...,也可另立主键并将“一”和“多”两表的主键作为关联表的外键; 多对多的表,则必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的外键。...SET_NULL:此值设置,会把外键设置为null,前提是允许为null。 SET_DEFAULT:此值设置,会把设置为外键的默认值。 SET():此值设置,会调用外面的值,可以是一个函数。...在这里插入图片描述 如果没有学生,没有课程来报名上学干嘛,所以是多对一,多个学生合成一张报名表 注意:外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错...一般使用CASCADE 表示级联删除 也就是有一个数据其中一个表删了,管聊的表就会删除,想下如果有个学生不读了,删掉了所有学生报名表中的数据,它绑的外键的学生,课程,是不是先把它删了,这就是级联删除,如果设置了

    1.9K30

    Python:Django搭建博客

    = [ { # 选择我们的模板引擎,刚刚用pycharm创建时已选择django自带的模板引擎 'BACKEND': 'django.template.backends.django.DjangoTemplates...media 这两个文件夹 配置 pycharm 运行参数 配置完成后点击 pycharm 中的运行按钮,在浏览器中输入 127.0.0.1:8000 访问,出现小火箭升空表示 Django...OK 用 django-admin 管理 数据库迁移完成会在 post 应用下生成一个迁移的文件,接下来在 django-admin 中注册模型,便于我们用 django-admin 管理 /post...,查看模型是否可以被管理,尝试点击添加与修改,没问题就说明注册成功 集成 Markdown 很多人喜欢用 markdown 格式写博客,我们可以通过集成 Django-mdeditor 来实现这个功能...中 将重复出现的部分提取出来,这个根据自己的模版抽取,每个都不相同,静态文件加载 如果一次没有提取好,可以慢慢一点点的抽取,对于一个后端程序员来说这个是一个慢工出细活的过程。

    57000

    Django学习-第七讲:django 中的常用字段、字段属性,外键和表关系、外键操作

    如果没有指定这个参数,那么在映射的时候将会使用模型名来作为默认的表名。 2. ordering 设置在提取数据的排序方式。...外键和表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。...因此这里我们首先来介绍下外键在Django中的使用。 类定义为class ForeignKey(to,on_delete,**options)。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个外键,记录着对应的作者的主键。...在论坛开发中,一般评论都可以进行二级评论,即可以针对另外一个评论进行评论,那么在定义模型的时候就需要使用外键来引用自身 class Comment(models.Model): content

    4K30

    Sentry 开发者贡献指南 - 数据库迁移

    在这种情况下,首先删除其他表中的外键列,然后返回到此步骤。 通过在列上设置 db_constraint=False,删除此表到其他表的任何数据库级外键约束。...外键 创建外键大多没问题,但是对于像 Project、Group 这样的大/繁忙的表,由于获取锁的困难,它可能会导致问题。您仍然可以创建 Django 级别的外键,而无需创建数据库约束。...为此,请在定义键时设置 db_constraint=False。 重命名表 重命名表很危险,会导致停机。发生这种情况的原因是在部署期间将运行旧/新代码的混合。...相反,更好的选择是: 在 Postgres 中添加没有默认值的列,但在 Django 中添加默认值。这使我们能够确保所有新行都具有默认值。...因此,一旦我们在 Postgres 中重命名该列,如果旧代码尝试访问它,它就会立即开始出错。有两种方法可以处理重命名列: 不要重命名 Postgres 中的列。

    3.6K20

    django 1.8 官方文档翻译:2-1-1 模型语法

    ,要显式指定外键并关联到多对多关系涉及的模型。...中介模型有一些限制: 中介模型必须有且只有一个外键到源模型(上面例子中的Group),或者你必须使用ManyToManyField.through_fields 显式指定Django 应该使用的外键。...如果你的模型中存在超个一个的外键,并且through_fields没有指定,将会触发一个无效的错误。 对目标模型的外键有相同的限制(上面例子中的 Person)。...Changed in Django 1.7: 在Django 1.6 及之前的版本中,中介模型禁止包含多于一个的外键。...查询集始终返回请求的模型 也就是说,没有办法让DJango在查询Person对象时返回MyPerson对象。Person 对象的查询集会返回相同类型的对象。

    5K20

    自定义 Django 管理界面中的多对多内联模型

    问题背景在 Django 管理界面中,用户可以使用内联模型来管理一对多的关系。但是,当一对多关系是多对多时,Django 提供的默认内联模型可能并不适合。...例如,如果存在一个产品模型和一个发票模型,并且产品和发票之间是多对多的关系,那么在发票的管理界面中,Django 会显示一个表格,其中包含所有产品及其对应的复选框。...具体步骤如下:创建一个新的内联模型类。这个类继承自 admin.TabularInline 或 admin.StackedInline。在新的内联模型类中,重写 get_formset() 方法。...在 formset_factory() 函数中,指定 model 参数为内联模型的模型类,并指定 fields 参数为内联模型中需要显示的字段。...这两个方法分别负责判断用户是否有添加和修改内联模型对象将新的内联模型类添加到 ModelAdmin 类中。在 ModelAdmin 类的 inlines 属性中,添加新的内联模型类。

    12510

    django_mysql_配置

    在自己数据中创建一个djangi_demo create database django_demo default charset=utf8; ---- 定义模型类 1....创建一个新的应用,为booktest,在models.py 文件中定义模型类,然后去setting注册应用 python manage.py startapp booktest ?...2) django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。...null是数据库范畴的概念,blank是表单验证范畴的 5) 外键 一般我用CASCADE 在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models...中包含了可选常量: CASCADE 级联,删除主表数据时连通一起删除外键表中数据 PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据 SET_NULL

    1.6K10

    Django之ForeignKey和ManyToManyField多表查询

    ForeignKey 来自Django官方文档的模型示例: from django.db import models class Blog(models.Model): name = models.CharField...只有在db_constraint=True时Django model才会在数据库上建立外键约束, 在该值为False时不建立约束. 默认db_constraint=True....如Entry.blog作为Blog的外键,默认情况下Blog.entry_set是包含所有参照Blog的Entry示例的查询集,可以使用查询集API取出相应的实例。...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些外键 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段的模型的外键名称(本例中为group),field2 为指向目标模型的外键的名称(本例中为person).

    1.8K10
    领券