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

Django Model将外键设置为另一个Model的字段

Django Model中的外键(ForeignKey)是一种字段类型,用于将一个模型(Model)中的字段与另一个模型的实例关联起来。外键字段的值是另一个模型的主键值。在Django中,外键字段通常使用ForeignKey类来定义。

以下是一个简单的例子,展示了如何在Django Model中定义外键字段:

代码语言: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模型中的实例。当创建一个Book实例时,需要为author字段提供一个Author实例的主键值。这样,Django就可以将这两个模型实例关联起来。

在Django中,外键字段的使用非常常见,它们可以帮助我们在不同的模型之间建立关联,从而更好地管理和查询数据。

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

相关·内容

Django model update foreign key 更新

要件:parent model: master.anken(primary key:id→anken_no) ※ id:自動生成child model : purchase.appl migrate操作...1,parent model :执行makemigratios,migrate2,child model :foreign key 注释掉,执行makemigratios,migrate(删掉)3,...child model :foreign key 注释解除,执行makemigratios,migrate(追加)詳細:parent変更前:python manage makemigrations...python manage makemigrations child app実施時、 primary key「anken_no」图片変更後makemigrations結果图片child图片問題:子表数据类型未被更新...app图片  ③python manage makemigrations child app  ④python manage migrate child app图片差分は問題なし图片DB確認: 数据类型

1K20

Django Model字段(field)各种选项说明

字段与选项 CharField() 字符字段 max_length = xxx or None # 必选项 blank = True 和 default = ” # 如果不是必填项,可以设置 unique...= True # 如果想要使其唯一,比如用于username,可以设置 choices = xxx_CHOICES # 如果有choice选项,可以设置 TextField() 文本字段 max_length...),可以设置 EmailField() 邮件字段 unique = True # 一般Email用于用户名应该是唯一,建议设置 IntegerField(),SlugField(),URLField(...可以设置 through = ‘intermediary model # 如果需要建立中间模型来搜集更多信息,可以设置 related_name = xxx # 便于反向查询 补充知识:django 使用...(‘-number’, ‘id’) 以上这篇Django Model字段(field)各种选项说明就是小编分享给大家全部内容了,希望能给大家一个参考。

1.8K30
  • Django 2.2文档系列】Model on_delete参数用法

    场景 我们用DjangoModel时,有时候需要关联。关联时,参数:on_delete几个配置选项到底是干嘛呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...提醒:级联删除不会调用model级行为,但是会为所有已删除对象发送pre_delete和 post_delete信号,有用Django信号机制场景,要考虑这个级联删除带来影响。...” models.PROTECT 防止删除引用对象。与上个恰恰相反,是防止关联数据被删除。 models.SET_NULL 设置关联内容null。只有设置了null=True时可用。...当数据被删除时,被关联内容被设置null。 models.SET_DEFAULT 设置默认值。必须设置有默认值 。...models.SET()SET()设置值作为值 ,如果传递了callable,则调用它结果。 DO_NOTHING不采取行动。

    2K10

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

    比如作为一个记录修改日期字段,可以这个属性设置True。 auto_now_add:在每次数据第一次被添加进去时候,都使用当前时间。...并且默认max_length是200。 2. 字段常用属性 1. null 如果设置True,Django将会在映射表时候指定是否空。默认是False。...因此在底层,DjangoArticle表添加了一个属性名_id字段(比如author字段名称是author_id),这个字段是一个,记录着对应作者主键。...即只要这条数据引用了那条数据,那么就不能删除外那条数据。 3.SET_NULL:设置空。如果那条数据被删除了,那么在本条数据上就将这个字段设置空。...如果设置这个选项,前提是要指定这个字段可以为空。 4.SET_DEFAULT:设置默认值。如果那条数据被删除了,那么本条数据上就将这个字段设置默认值。

    4K30

    Django获取model字段名和字段verbose_name方式

    (u'游戏id',max_length=20) def __str__(self): return self.name 获取字段名和verbose_name: from django.apps...__name__) #返回是‘charfield','textfield',等这些类型 return field_dic 注:appname是model所在app名字,modelname是model...名字 如果在view中执行get_model.filed(‘Game_app’,’Game’),那么field_dic结果: {‘gameid’: ‘\u6e38\u620fid’, ‘id’:...Forms组件 参数配置案例 input样式, 渲染标签加class 错误信息提示 Forms渲染出标签类型 密码型、文本型、邮箱型框 from django.forms import widgets...获取model字段名和字段verbose_name方式就是小编分享给大家全部内容了,希望能给大家一个参考。

    4.5K10

    Django model.py表单设置默认值允许操作

    null=True 数据库级别可以为空 补充知识:Django中models.py字段选项null和blank区别和使用 1.null 如果null=True,数据库中空值储存为NULL,默认为False...2.blank 如果blank=True,则允许字段空。默认为False。 需要注意是,这不同于null,null纯粹是与数据库相关。...而blank是与表单验证相关,如果一个字段有blank=True,表单验证允许输入一个空值,反之blank=False,该字段必须是有值。...3.当一个CharField字段都有unique=True并blank=True设置。 在这种情况下,null=True需要避免在使用空值保存多个对象时出现唯一约束违规。...以上这篇Django model.py表单设置默认值允许操作就是小编分享给大家全部内容了,希望能给大家一个参考。

    6.2K20

    动态设置djangomodel field默认值操作步骤

    问题背景 djangomodel field需要动态设置默认值,具体案例如下: 原始代码如下,model是Application,其中字段ignore_fort默认值设置False class Application...,如果ENV是UAT或者FAT(不区分大小写,具体分支,比如uaT01也可以),则default设置True,否则设置False 首先想到是如下代码: class Application(TimestampedModel...,逻辑正确,如果在shell中修改ENV值,则新建modelignore_fort值并不是根据当前ENV值进行设置,而是保持原来值,达不到需求。...ModelChoiceField:过滤查询集并将默认值设置对象 我有一个Django Form类定义喜欢这个在Models: class AccountDetailsForm(forms.Form...form = AccountDetailsForm(initial={‘adminuser’:’3′}) 翻译自:这里 以上这篇动态设置djangomodel field默认值操作步骤就是小编分享给大家全部内容了

    3K50

    django模型中有关系表删除相关设置

    0904自我总结 django模型中有关系表删除相关设置 一.一对一 例如有Author、AuthorDetail两表 author = models.OneToOneField(to='Author...AuthorDetail表中:作者删除详情删除,详情删除作者保留 2)作者找详情用 related_name(detail),详情找作者用 字段(author) 3)db_constraint...Book表中(多一方):出版社删除书不动,书删除没有任何影响 2)出版社找书用 related_name(books),书找出版社 字段(publish) 3)db_constraint...断开表关联,on_delete规定逻辑关联删除动作,models.DO_NOTHING关联无动作 三.以外字段关联 1)断关联,删除关联表记录,键值置空 db_constraint=False,...:出版社删除或书删除彼此不影响,但关系表一定级联删除 2)正向找 字段,反向找 字段related_name 3)db_constraint断开表关联,on_delete不存在(不设置,本质在第三张表中设置

    3K20

    利用django model save方法对未更改字段依然进行了保存

    结果依然’abc’。...save()保存时,虽然没有更改其它字段,但依然会将内存中值,再次存入数据库,子函数和其它进程更改值会被覆盖。...下面针对本文标题来做示例: django.db.models.signals.pre_save & django.db.models.signals.post_save Sent before or...(有些信号会被多次发送,但是我们通常只是对其中一些信号子集感兴趣,下面演示针对具体某个模型pre_save以及post_save来发送信号) ?...和save运行逻辑一样,pre信号先触发,post后触发 以上这篇利用django model save方法对未更改字段依然进行了保存就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.7K10

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

    会自动将该行数据以str()化之后进行搜索,但其实并不是这样,如果加入到搜索域中,需要明确写出来。...,如果有,要注明哪个字段,双下划线 list_display = ('book', 'category') # 在页面上显示字段,若不设置则显示 models.py 中 __unicode...Django admin 系统中搜索时可能会出现“related Field has invalid lookup: icontains”错误,主要原因是查询是需要指定相应字段。...不应该只是一个model,而该是另一个明确一个字段。 所以我们需要指定特定字段 “本表字段__所在表需查询字段”。...补充知识:Djangomodel中使用,但在页面上显示是xxx_object?

    3.8K20

    django 解决model中类写不到数据库中,数据库无此字段问题

    有两种可能,一种settings少了options,一中是你models文件中加了逗号 第一种可能 settings中需要添加以下字段 DATABASES = { 'default': {...'ENGINE': 'django.db.backends.mysql', 'NAME': 'mxshop', 'HOST': '127.0.0.1', 'PORT': '3306...这样就ok了 补充知识:django框架model中外不落实到数据库 在外字段参数中添加db_constraint=False即可,数据库中没有关系,代码中依然可以按照正常方式使用。..., db_constraint=False) class Room(models.Model): status = models.IntegerField(default=1) 以上这篇django...解决model中类写不到数据库中,数据库无此字段问题就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.3K30

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

    Django中基表设置 通过图书管理系统引入多表操作:如果我们创建表方式是先抽象出表与表之间相同字段建一个父类,然后在用每个表类去继承这个父类,如下面的代码,我们无法得到期望字段。...,如果要实现表继承,需要进行专门设置Metaabstract设置True下面这种写法就可以: class BaseModel(models.Model): is_delete = models.BooleanField...更合理) """ Django orm中外字段属性详解 在建表之前我们对外字段属性进行了解: 1)related_name在外设置反向查询字段名:正向找字段名,反向找related_name...,取消两表级联,默认值设置空,反向查询字段设置book authors = models.ManyToManyField(to='Author', related_name...,两张表设置级联,并将反向查询字段设置detail 数据库中脏数据介绍 数据库中常见并发操作所带来了一致性问题包括:丢失修改,不可重复读,读“脏”数据,幻读。

    4.3K30

    Django model 层之Models与Mysql数据库小结

    对应mysql表 myapp_album, Musician model对应mysql表Musician表myapp_musician,则以下field定义,会使两个mysql表建立关联关系...myapp_album.artist列引用mapp_musician.auto_id字段值,即mapp_musician.auto_idmyapp_album表。...SET_NULL 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联记录列值null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联记录列值默认值。必须设置默认值。...SET() 删除被参照表某条表记录,设置参照表中,同待删除记录存在外关联关系记录列值传递给SET()参数值,如果传递给SET()参数值是可调用对象,则设置调用可调用对象获取结果。

    2.2K20

    django:DateTimeField如何自动设置当前时间并且能被修改 ——django日期时间字段使用

    创建djangomodel时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。...DateTimeField.auto_now 这个参数默认值false,设置true时,能够在保存该字段时,将其值设置当前时间,并且每次修改model,都会自动更新。...需要注意是,设置该参数true时,并不简单地意味着字段默认值当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动字段赋值;如果使用django再带admin管理器,那么该字段在admin...DateTimeField.auto_now_add 这个参数默认值也False,设置True时,会在model对象第一次被创建时,字段设置创建时时间,以后修改对象时,字段值不会再更新...实际场景中,往往既希望在对象创建时间默认被设置当前值,又希望能在日后修改它。怎么实现这种需求呢? django中所有的model字段都拥有一个default参数,用来给字段设置默认值。

    7.2K80
    领券