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

如何在Django管理中显示外键字段值而不是id?

在Django管理中显示外键字段值而不是id,可以通过以下步骤实现:

  1. 在Django的模型中,定义外键字段时,可以使用related_name参数为该外键字段指定一个反向关联的名称。例如,假设有一个模型Book和一个模型AuthorBook模型中有一个外键字段author指向Author模型,可以这样定义:
代码语言:txt
复制
class Book(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE, related_name='books')
    # 其他字段...
  1. 在Django的管理界面中,创建一个自定义的模型管理类,并重写__str__方法,将外键字段的值返回。例如,假设有一个BookAdmin类用于管理Book模型:
代码语言:txt
复制
from django.contrib import admin

class BookAdmin(admin.ModelAdmin):
    def __str__(self):
        return self.author.name  # 假设Author模型中有一个name字段

admin.site.register(Book, BookAdmin)

这样,在Django的管理界面中,就会显示外键字段author的值而不是id。

关于Django的更多信息和使用方法,可以参考腾讯云的云服务器CVM产品介绍:Django官方文档

注意:本答案中没有提及云计算品牌商,如有需要,请自行搜索相关信息。

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

相关·内容

关于“Python”的核心知识点整理大全59

下面来修改模型Topic,在其中添加一个关联到用户的。这样做后,我们必须对数据库 进行迁移。最后,我们必须对有些视图进行修改,使其只显示与当前登录的用户相关联的数据。 1....的模型User,然后在Topic添加了字段owner,它建 立到模型User的关系。...在2处的输出Django指出我们试图给既有 模型Topic添加一个必不可少(不可为空)的字段字段没有默认。...为将所有既有主题都关联到管理用户ll_admin,我输入了用户ID1(见6)。并非必须使用 超级用户,可使用已创建的任何用户的ID。...注意 你可以重置数据库不是迁移它,但如果这样做,既有的数据都将丢失。一种不错的做 法是,学习如何在迁移数据库的同时确保用户数据的完整性。

11510

Django模型

默认创建的主键列属性为id,也可以使用pk,意为primary key. 字段名称不能出现双下划线,因为这是Django的查询语法之一。... 这个东西,通常都是在业务逻辑层面来实现的,不是在数据库实现。但是通常大家学习的数据库课程,都会有数据库设计范式,其中有个第三范式就是专指的约束。在这里只是简单的介绍一下。...choices参数就是从我们定义的二元组(GENDER_CHOICES)获取值。二元组的第一个会储存在数据库第二个将只会用于在表单显示。...,此选项会抛出IntegrityError异常 注意:我们在数据库,设置的时候需要制定另一张表关联的字段,但是在Django里并没有指定。...这是因为Django会默认指定另外一张表的id作为关联字段。如下图所示: 可以看到peopleinfo这张表键名称是book_id

1.9K20

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

,所以,即便显示为该字段提供了,也会自动忽视显示设定的。...如果设置了该选项,那么默认的表单组件将变为一个select box,不是标准是text field,且将被限制从给定choice中选择choice。...myapp_album.artist列引用mapp_musician.auto_id字段,即mapp_musician.auto_id为myapp_album表的。...SET_NULL 删除被参照表的某条表记录,设置参照表,同待删除记录存在外关联的记录的为null。当且仅当设置了null=True选项时可用。...SET_DEFAULT 删除被参照表的某条表记录,设置参照表,同待删除记录存在外关联的记录的为默认。必须为列设置默认

2.2K20

Django 3.1 官网学习路线

字段还可以有各种可选参数;在本例,我们将投票的默认设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...主键(id)会自动添加。(你也可以忽略这个。) 按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式的。...不同的模型字段类型(DateTimeField、CharField)对应于适当的 HTML 输入小部件。每种类型的字段都知道如何在 Django 管理显示自己。...“添加选择”表单如下所示: 在该表单,“Question”字段是一个选择框,包含数据库的每个问题。Django 知道一个应该在管理中表示为一个框。在我们的例子,目前只存在一个问题。...使用表格内联(不是 StackedInline),相关对象将以更紧凑的、基于表格的格式显示: 自定义管理员更改列表 现在问题管理页面看起来不错了,让我们对“更改列表”页面做一些调整——这个页面显示系统的所有问题

8.1K10

Mysql基础

有了数据库管理系统,用户就可以在抽象意义下处理数据,不必顾及这些数据在计算机的布局和物理位置。...也就是说,它们包含字节字符串不是字符字符串。 BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。...创建 --- 每一个班主任会对应多个学生 , 每个学生只能对应一个班主任 ----主表 CREATE TABLE ClassCharger( id TINYINT PRIMARY...) VALUES ("yuan",1); -- 删除居然成功,可是 alvin3显示还是有班主任id=1的冰冰的; -----------增加和删除外--------- ALTER TABLE...classcharger(id); ALTER TABLE student DROP FOREIGN KEY abc; INNODB支持的ON语句 --约束对子表的含义: 如果在父表找不到候选

4.2K20

django 模型的计算字段实例

verbose_name='姓') given_name = models.CharField(max_length=20, verbose_name='名') def name(self): # 计算字段显示在修改页面只能定义在只读字段..., 没有这个,字段标题将显示'name' readonly_fields = ('name',) admin.site.register(Person, PersonAdmin) 补充知识:django...如何在 search_fields 包含字段 在search_fields中加入一个的名字是不能查询的,要写成(键名__字段名)的形式. search_fields = ('attributename...','goodsclass__cn') # goodsclass__cn 就可以搜索的名字中有搜索词的条目了, # 比如搜索手机的分辨率,不是电脑的分辨率,就可以搜索'手机 分辨率' 以上这篇django...模型的计算字段实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.4K20

35.Django2.0文档

其它的django.contrib应用程序,django.contrib.redirects,其它从网上下在的第三方Django应用程序一样,都会自行添加到管理工具。  ...也就是说,这些修改实质上是构成模块的一部分,并且正好被管理工具使用,不是专门针对管理工具的。 除了这些,Django还提供了大量选项让你针对特别的模块自定义管理工具。...filter_horizontal和filter_vertical选项只能用在多对多字段上, 不能用于ForeignKey字段。 默认地,管理工具使用`` 下拉框`` 来展现`` `` 字段。...解决这个问题的办法是使用`` raw_id_fields`` 选项。它是一个包含字段名称的元组,它包含的字段将被展现成`` 文本框`` ,不再是`` 下拉框`` 。...在这个输入框,你输入什么呢? publisher的数据库ID号。 考虑到人们通常不会记住这些数据库ID管理工具提供了一个放大镜图标方便你输入。

11.3K100

Django模型最佳实践

用DecimalField来存储货币相关数据不是FloatField。 定义__str__方法。 不要将数据文件放在同一个目录。...,默认为DEFAULT_INDEX_TABLESPACE default 字段的默认 editable 字段在后台模型管理或ModelForm是否显示,默认为True error_messages...unique 设置为True时,表字段必须是唯一的 verbose_name 字段在后台模型管理显示的名称,未指定时使用字段的名称 ForeignKey属性 limit_choices_to:是一个...on_delete:关联的对象被删除时对应的动作,可取的包括django.db.models定义的: CASCADE:级联删除。...SET_NULL:把设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把设置为默认,提供了默认才能这么做。

2.2K40

使用Django实现把两个模型类的数据聚合在一起

Django想要把模型类聚合得到想要的数据可以用F对象。 比如有模型类A和B,A和B之间有关联在一起,A是子表,B是父表(反过来没试过。。...我看到网上有说F对象可以这样用F(‘b__id’) == F(‘模型类名小写__字段名’),此处是双下划线。 但是我用Django2.0时会报错。。真是搞不懂,后来我直接使用字段名居然可以,醉了。...Admin页面显示父表,编辑子表 默认情况下,ModelAdmin只允许您管理模型“本身”字段,不是相关模型.以下方法将实现,在应用类的列表管理显示页面,显示父表的字段;在编辑页面,父表对子表进行编辑...models.Model): # 写一个方法,定义在管理页面上能够显示字段字段 # grade为Students模型的检表,level为Grades模型的检表,那么为Level模型的字段...添加的是'模型类字段' # 如果是需要遵循这样的语法:本表字段__(双下划线)检表字段检表的字段__最终表要显示字段

1.4K20

Django admin 一些有用的设置

import Blog    #Blog模型的管理器 @admin.register(Blog) class BlogAdmin(admin.ModelAdmin):     #listdisplay设置要显示在列表字段...设置显示字段      fk_fields = ('machine_room_id',) 此处比较简单,自己尝试一下即可。...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索框;日期时间用分层筛选。 过滤器如果是需要遵循这样的语法:本表字段__表要显示字段。...:“user__user_name” 3、颜色显示 想对某些字段设置颜色,可用下面的设置: ?...9.自定义列表字段 上面的一对多和多对多可以数据编辑显示,但在列表没有显示。有时还需要显示一些其他东西。例如两个字段相乘计算结果等等。这些都可以通过自定义列表字段处理和显示

2.5K70

django自定义非主键自增字段类型详解(auto increment field)

,这个字段可以是主键,也可以不是主键,如果不是主键,则必须设置为一种“(key)” # (primary key)也是(key)的一种,key还包括(foreign key)、唯一(unique...(表名__字段名=1).values('表名__字段名') limit_choices_to=None, # 在Admin或ModelForm显示关联数据时,提供的条件: # : - limit_choices_to...limit_choices_to=lambda : Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption='root') db_constraint=True # 是否在数据库创建约束...(表名__字段名=1).values('表名__字段名') limit_choices_to=None, # 在Admin或ModelForm显示关联数据时,提供的条件: # : - limit_choices_to...membership_invites", ) invite_reason = models.CharField(max_length=64) db_constraint=True, # 是否在数据库创建约束

2.2K10

Django之路由层

publish = models.ForeignKey(to='Publish') # to用来指代跟哪张表有关系 默认关联的就是表的主键字段 """ 一对多字段创建的时候同步到数据中表字段会自动加..._id后缀,如果我们手动加了_id orm也会在给我们加一次,所以我们这里不要加_id """ # 书跟作者是多对多的关系字段建在任意一方都可以,但是建议建在查询频率较高的那一方...() addr = models.CharField(max_length=32) 这里需要说明: 一对一、多对多的表关系建立在任意一方都可以,建议建在查询频率高的一方 一对多字段创建的时候同步到数据中表字段会自动加..._id后缀,如果我们手动加了_id orm也会在给我们加一次,所以我们这里不要加_id 多对多关系,django orm会自动帮我们创建书籍和作者的第三张关系表 #的建立 publish = models.ForeignKey...3.9Django1.x和2.x的版本的路由层区别 1.Django2.x默认的url通过path接收,path的第一个输入不是正则表达式,里面写的是什么就按什么匹配。

1.3K21

【云+社区年度正文】Django从入门到精通No.2----模型

二、模型的定义 模型可以定义储存数据的字段,比如我们在进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型是与数据库有关的操作集合。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个的操作,即ForeignKey字段,而且要定义在多的一方。...db_constraint=True # 是否在数据库创建约束 parent_link=False # 在Admin是否显示关联数据 2.多对多 多对多的表...,必须设中间关联表,关联表设独立主键,并引入两个“多”头的表的主键作为关联表的。...on_delete=None # 当删除关联表的数据时,当前表与其关联的行的行为 五、管理员登陆 为了能让大家提前看到django的数据操作,django内置了一款非常到位的系统管理员登陆设计系统

2.1K00

【Python全栈100天学习笔记】Day41 Django深入理解框架

字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库字段对应的列,verbose_name则设置了Django后台管理系统字段显示的名称...用DecimalField来存储货币相关数据不是FloatField。 定义__str__方法。 不要将数据文件放在同一个目录。...unique 设置为True时,表字段必须是唯一的 verbose_name 字段在后台模型管理显示的名称,未指定时使用字段的名称 ForeignKey属性 limit_choices_to:是一个...on_delete:关联的对象被删除时对应的动作,可取的包括django.db.models定义的: CASCADE:级联删除。...SET_NULL:把设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把设置为默认,提供了默认才能这么做。

2.2K30

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

1. django的常用字段 1. AutoField 映射到数据库是int类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主键,那么模型会自动的生成一个叫做id的自动增长的主键。...比如我们想要在数据库映射的时候使用自己指定的表名,不是使用模型的名称。那么我们可以在Meta类添加一个db_table的属性。...后台管理 admin 显示的中文名称 class Book(models.Model): name = models.CharField(max_length=20,null=False)...因此在底层,Django为Article表添加了一个属性名_id字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。...如果的那条数据被删除了,那么本条数据上就将这个字段设置为默认。如果设置这个选项,前提是要指定这个字段一个默认。 5.SET():如果的那条数据被删除了。

3.9K30

Django 学习笔记之模型高级用法(上)

AutoFiled 是一个根据实际 ID 自动增长的 IntegerField。通常不需要直接使用它,如果表没有设置主键时,Django 将会自动添加一个自增主键。...2.1 ForeignKey 1) on_delete 在 Django 2.0 ,设置时需要添加一个 on_delete选项。本身涉及到两个表的数据,况且在数据库是有约束行为。...SET_DEFAULT: 置默认,删除的时候,字段设置为默认,所以定义的时候注意加上一个默认。 SET(): 自定义对应的实体的。...主要用于反向查询,即源模型实例通过管理器返回第一个模型的所有实例。 默认情况下,这个管理器的名字为 foo_set,其中 foo 是源模型名字的小写。...没有主动设置时,则是 first name: first_name = models.CharField(max_length=30) 对于、多对多和一对一字字段,由于第一个参数需要用来指定关联的模型

2K30

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

创建模型管理类来管理某个模型在后台显示的页面形式 ModelAdmin类可以控制不同模型在Admin界面的展示方式,主要包括在列表页的展示方式、添加修改页的展示方式 上文中展示了TestAdmin类的一种注册方法...list_display = ['id','title','pub_date']   或者模型方法,要求方法有返回,如下在模型类定义一个方法  1234 class TestInfo(models.Model...None,一个空字符串,或者一个没有元素的可迭代字段Django显示 - (破折号)。   ...过滤器 用 list_filter 来激活管理更改列表页面右侧侧栏的过滤器,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display...是不能直接接收字段的),会将对应字段列出来,一般用于快速过滤有重复字段

1.3K30
领券