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

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

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

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

代码语言:python
复制
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
复制
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开发取消约束实现

# setting设置 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给关系传值...,删除外关系 反查: 表关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class小写名字+_set , ex: book_set....(数据库字段名字room_number_id)值,将相对应值直接赋值给该字段      class_number = ClassNumber.object.get("id=1").room_number...那么”一”,Book反查是,Book.object.get(id=1).reply_set.all() # reply_set是不设置related_namedjango自己设置 多对多: class...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发取消约束就是小编分享给大家全部内容了,希望能给大家一个参考。

3.6K10

django admin配置搜索域是一个处理方法

python 2.7.11 django 1.8.4 错误内容:related Field has invalid lookup: icontains 我原来默认认为处理搜索时候,django...哪些字段显示,在这里 remark 字段将不显示 admin.site.register(Category, CategoryAdmin) [ 说明 ] 使用 Django admin 系统搜索可能会出现...Django定义了如下A,B两个模型class A: name=models.CharField(max_length=15) def __unicode__(self):...,部署到云服务器上后,就在后台管理系统中看到B属性一栏f显示为A_Object,并没有显示A属性——name值。...admin配置搜索域是一个处理方法就是小编分享给大家全部内容了,希望能给大家一个参考。

3.8K20

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

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

1.5K20

37.Django1.11.6文档

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

24.3K80

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

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

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

2.6K10

Django 3.1 官网学习路线

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

8.1K10

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 编辑页面上显示。

93370

Django模型

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

1.9K20

Django项目知识点(三)

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

1.8K30

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 来实现这个功能... 将重复出现部分提取出来,这个根据自己模版抽取,每个都不相同,静态文件加载 如果一次没有提取好,可以慢慢一点点抽取,对于一个后端程序员来说这个是一个慢工出细活过程。

54500

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

3.9K30

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 对象查询集会返回相同类型对象。

4.9K20

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=TrueDjango model才会在数据库上建立约束, 该值为False不建立约束. 默认db_constraint=True....如Entry.blog作为Blog,默认情况下Blog.entry_set是包含所有参照BlogEntry示例查询集,可以使用查询集API取出相应实例。...在这种情况下,必须使用through_fields 明确指定Django 应该使用哪些 through_fields 接收一个二元组('field1', 'field2'),其中field1 为指向定义...ManyToManyField 字段模型键名称(本例为group),field2 为指向目标模型名称(本例为person).

1.7K10

Django基表创建、字段属性简介、脏数据概念、子序列化

如两张表建立了一对一字段,A表,那么先往B表写数据就更合理。...假设图书管理系统书、出版社、作者、作者详细信息四张表之间关系如下: """ 表关系 1)Book 和 Publish 一对多:一方 Book 2)Book 和 Author 多对多:查询频率高一方...Book 3)Author 和 AuthorDetail 一对一:要根据实际需求建立合理位置 AuthorDetail(AuthorDetail方作者就可以没有AuthorDetail,...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询字段名:正向找字段名,反向找related_name...值,related_name默认值是表名小写 + _set,这就是为什么Django跨表反向查询我们使用表名小写 + _set去查另一张表数据。

4.3K30
领券