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

为什么在django admin中,外键显示属性值,而在angular和数据库中,它返回id?

在Django admin中,外键字段默认显示关联对象的属性值,而在Angular和数据库中,它返回关联对象的ID。这是由于在不同的场景中,对外键字段的处理方式存在差异。

在Django admin中,外键字段的目的是为了方便用户在管理界面中对关联对象进行操作。为了提供更好的用户体验,Django admin会默认将外键字段显示为关联对象的属性值,以便用户能够更直观地理解和操作数据。这种显示方式对于管理和浏览数据非常方便,但并不适用于所有情况。

而在Angular和数据库中,外键字段的处理方式更加注重数据的一致性和性能。数据库设计中,外键字段通常作为表之间的关联关系建立,并以关联对象的ID作为存储的方式。这种设计方式能够保持数据的一致性,而且在查询和操作数据时效率较高。同样,在Angular中,由于数据通常是通过API从后端获取并展示,因此外键字段返回关联对象的ID更加符合数据的传输和处理需求。

综上所述,Django admin中外键字段显示属性值,而在Angular和数据库中返回ID,是基于不同的设计目的和场景需求。在实际开发中,需要根据具体情况选择合适的处理方式,以提供良好的用户体验和高效的数据处理能力。

相关链接:

  • Django admin官方文档:https://docs.djangoproject.com/en/3.2/ref/contrib/admin/
  • Django关于外键字段的文档:https://docs.djangoproject.com/en/3.2/topics/db/models/#relationships
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django模型

verbose_name = '图书' # 在admin站点中显示的名称 注意 模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名,一般我们会通过...外键 外键这个东西,通常都是在业务逻辑层面来实现的,而不是在数据库中实现。但是通常大家学习的数据库课程中,都会有数据库设计范式,其中有个第三范式就是专指的外键约束。在这里只是简单的介绍一下。...choices参数就是从我们定义的二元组(GENDER_CHOICES)中获取值。二元组的第一个值会储存在数据库中,而第二个值将只会用于在表单中显示。...它的常用值可以如下: CASCADE级联,删除主表数据时连通一起删除外键表中数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据 SET_NULL设置为NULL...,此选项会抛出IntegrityError异常 注意:我们在数据库中,设置外键的时候需要制定另一张表中关联的字段,但是在Django里并没有指定。

1.9K20

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

下面来修改模型Topic,在其中添加一个关联到用户的外键。这样做后,我们必须对数据库 进行迁移。最后,我们必须对有些视图进行修改,使其只显示与当前登录的用户相关联的数据。 1....中添加了字段owner,它建 立到模型User的外键关系。...输出中列出了三个用户:ll_admin、eric和willie。 在3处,我们遍历用户列表,并打印每位用户的用户名和ID。...Django询问要将既有主题关联 到哪个用户时,我们将指定其中的一个ID值。 3. 迁移数据库 知道用户ID后,就可以迁移数据库了。...在3处,Django给我 们提供了两种选择:要么现在提供默认值,要么退出并在models.py中添加默认值。在4处,我们 选择了第一个选项,因此Django让我们输入默认值(见5)。

14410
  • Django 3.1 官网学习路线

    我们将很快看到,它不仅用于数据库架构,而且用于验证。 字段还可以有各种可选参数;在本例中,我们将投票的默认值设置为 0。 最后,请注意使用外键定义了关系。...按照惯例,Django 会将"_id"附加到外键字段名。(是的,你也可以重写这个。) 外键关系是通过外键约束来显式的。...不要担心可延期的部分;它告诉 PostgreSQL 在事务结束之前不要强制执行外键。...更改它,重新加载页面并检查正确的值出现。 通过点击“今天”和“现在”快捷键更改“发布日期”。然后点击“保存并继续编辑”。然后点击右上角的“历史”。...“添加选择”表单如下所示: 在该表单中,“Question”字段是一个选择框,包含数据库中的每个问题。Django 知道一个外键应该在管理中表示为一个框。在我们的例子中,目前只存在一个问题。

    8.2K10

    后端框架学习-Django

    一个模型类代表数据库的一张数据表 模型类中每一个类属性都代表数据库中的一个字段 模型是数据交互的接口,是表示和操作数据库的方法和方式。...创建一对一数据 无外键的模型类,和之前相同 有外键的模型类: wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例...)) wife = Wife.objects.create(name=’王夫人’,author_id = 1(类属性字段绑值)) 一对一查询 正向查询:从外键查对象 反向查询:从对象查外键 调用反向属性查询到关联的一方...一对多查询 核心:正向属性(authors)和反向属性(book_set) 在多表上设置外键,关联一表。...无外键的模型类,和之前相同 有外键的模型类: 类似上面 wife = Wife.objects.create(name=’王夫人’,author = author1(类属性名称绑实例)

    9.6K40

    Django篇(一)

    在Django中,Django把控制器变成了Template,其实是一样的,就是名字不一样了,他把自己的模式叫做MVT。 不同的是:V变成了和MVC中C的功能相同,T和MVC中的V功能相同。...') 多表联查有个外键,我们通过外键来查询 通过第一张表查询第二张表 s1 = student.objects.get(id = 1) # 这样就查询到 nid = 1 的person的表了,在表名后加...查询到stuname值 添加第二张表 s1 = student.objects.get(id = 1) p2 = person() p2.name = '小花' # 外键需要赋值一个对象 p2.sid...= s1 # 查询外键值 赋值是一个对象,那我们怎么查询到id值?...p3 = person.objects.get(id = 1) # 这样才能查询到id值,在字典名后加_id p3.nid_id 后台管理(admin) Django给我们提供了很快生成后台的管理页面。

    1.1K30

    Django之ORM数据库

    一对一:实质就是在主外键(author_id就是foreign key)的关系基础上,给外键加了一个UNIQUE=True的属性;              一对多:就是主外键关系;(foreign key...(如何处理外键关系的字段如一对多的publisher和多对多的authors) #一对多(ForeignKey): #方式一: 由于绑定一对多的字段,比如publish,存到数据库中的字段名叫...键的名称是聚合值的 标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。...中的返回值。即在查询集上生成聚合。 F查询和Q查询 仅仅靠单一的关键字参数查询已经很难满足查询要求。...的配置 admin是django强大功能之一,它能共从数据库中读取数据,呈现在页面中,进行管理。

    2.6K10

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

    字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称...通用字段属性 选项 说明 null 数据库中对应的字段是否允许为NULL,默认为False blank 后台模型管理验证数据时,是否允许为NULL,默认为False choices 设定字段的选项,各元组中的第一个值是设置在模型上的值...db_constraint:是否为外键创建约束,默认值为True。...on_delete:外键关联的对象被删除时对应的动作,可取的值包括django.db.models中定义的: CASCADE:级联删除。...SET_NULL:把外键设置为null,当null属性被设置为True时才能这么做。 SET_DEFAULT:把外键设置为默认值,提供了默认值才能这么做。

    2.3K30

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

    二、模型的定义 模型可以定义储存数据的字段和值,比如我们在进行表单提交的时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库中。简单来说,模型是与数据库有关的操作集合。...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个外键的操作,即ForeignKey字段,而且外键要定义在多的一方。...=None,# 反向操作时,使用的连接前缀,用于替换【表名】 limit_choices_to=None, # 在Admin或ModelForm中显示关联数据时,提供的条件,字典类型...db_constraint=True # 是否在数据库中创建外键约束 parent_link=False # 在Admin中是否显示关联数据 2.多对多 多对多的表...db_constraint=True # 是否在数据库中创建外键约束 db_table=None # 默认创建第三张表时,数据库中表的名称

    2.1K00

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

    IntegerField 在 Django 所有支持的数据库中,合法取值范围是 -2147483648 到 2147483647。...所以它的取值范围不能为负数和零了。 1.3 时间类型 DateField 和 DateTimeField 中的两个重要属性 auto_now 和 auto_now_add 默认值都是 Flase。...2.1 ForeignKey 1) on_delete 在 Django 2.0 中,设置外键时需要添加一个 on_delete选项。外键本身涉及到两个表的数据,况且外键在数据库中是有约束行为。...SET_DEFAULT: 置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。 SET(): 自定义对应的实体的值。...2)limit_choices_to 该参数用于限制外键所能关联的对象,只能用于 Django 的 ModelForm(Django的表单模块)和 admin 后台,对其它场合无限制功能。

    2K30

    django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分

    按照惯例,Django 会在外键字段名上附加 “_id” 。 ( 是的,你仍然可以重写此行为。) 外键关系由 REFERENCES 语句显示声明。...这些 sql 命令其实并没有在你的数据库中运行过 - 它只是在屏幕上显示出来,以便让你了解 Django 认为什么样的 SQL 是必须的。...请注意这可能会显示 "1L" 而不是 "1",取决于 # 你正在使用的数据库。 这没什么大不了的,它只是意味着你的数据库后端 # 喜欢返回的整型数作为 Python 的长整型对象而已。...>>> p.id 1 # 通过 Python 属性访问数据库中的列。 >>> p.question "What's new?"...Django 创建了 # 一个保存外键关联关系的集合 ( 例如 poll 的 choices) 以便可以通过 API # 去访问。

    99820

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

    (admin.ModelAdmin):    list_per_page = 20 操作选项的位置   由action_on_bottom 和action_on_top两属性来控制 默认显示在顶部,...默认值分别为:False 和 True,改为只显示在底部: 1234 class TestAdmin(admin.ModelAdmin):    list_per_page = 20    actions_on_bottom...list_display = ['id','title','pub_date']   或者模型方法,要求方法有返回值,如下在模型类中定义一个方法  1234 class TestInfo(models.Model... = 'unknown' 以上通过指定方法属性来控制显示是新老版本通用的,在Django3.2可以通过给装饰器传参来解决:   在model.py中: 1234567891011121314151617...是不能直接接收外键字段的),会将对应字段的值列出来,一般用于快速过滤有重复值的字段。

    1.3K30

    Django 1.10中文文档-第一个应用Part7-自定义管理站点

    在这个表单中,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Django在admin站点中,自动地将所有的外键关系展示为一个select框。...在我们的例子中,目前只有一个question对象存在。 请注意图中的绿色加号,它连接到Question模型。每一个包含外键关系的对象都会有这个绿色加号。...点击它,会弹出一个新增Question的表单,类似Question自己的添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice的关联外键对象。...如果我们想要同时显示一些别的内容,可以使用list_display属性,它是一个由多个字段组成的元组,其中的每一个字段都会按顺序显示在页面上,代码如下: # polls/admin.py class...自定义管理站点外观 很明显,在每一个admin页面坐上顶端都显示“Django 管理”是感觉很荒诞,它仅仅是个占位文本。利用Django的模板系统,可以易修改它。

    3.6K60

    关于“Python”Django 管理网站的核心知识点整理大全52

    我们需要告诉Django,默认应使用哪个属性来显示有关主题的信息。Django调用方法 __str__()来显示模型的简单表示。...在这里,我们编写了方法__str__(),它返回存储在属性text 中的字符串(见3)。...向管理网站注册模型 Django自动在管理网站中添加了一些模型,如User和Group,但对于我们创建的模型,必须 手工进行注册。...外键是一个数据库术语,它引用了数据库中的另一条记录;这些代码将每个条目关联 到特定的主题。每个主题创建时,都给它分配了一个键(或ID)。...Meta存储用于管理模型的额外信息,在这里,它让 我们能够设置一个特殊属性,让Django在需要时使用Entries来表示多个条目。如果没有这个类, Django将使用Entrys来表示多个条目。

    17010

    【愚公系列】2022年01月 Python教学课程 40-Django框架之模型属性详解

    verbose_name = '图书' # 在admin站点中显示的名称 def __str__(self): """定义每个数据对象的显示信息"""...不指定时Django会自动创建属性名为id的自动增长属性 BooleanField 布尔字段,值为True或False NullBooleanField 支持Null、True、False三种值 CharField...这个字段在表中必须有唯一值,默认值是False null是数据库范畴的概念,blank是表单验证范畴的 6) 外键 在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理...,在django.db.models中包含了可选常量: CASCADE级联,删除主表数据时连通一起删除外键表中数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据...1)生成迁移文件 python manage.py makemigrations 2)同步到数据库中 python manage.py migrate 总结 django开发模型类和字段最好在代码里定义在迁移同步到数据库

    1.4K20

    Django—入门

    在ORM框架中,它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。...在我们之后迁移生成表的时候,Django框架就会自动帮我们在图书表和英雄表之间建立一个外键关系。 最后我们可以看到数据库中生成的英雄表如下图: ?...注意上图中booktest_heroinfo表中有一列hbook_id,这一列名为什么不叫hbook? hbook_id是根据HeroInfo类的关系属性hbook生成的,对应着图书表中的主键id。...4.自定义管理页面 在列表页只显示出了BookInfo object,对象的其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能,比如列表页要显示哪些值。...属性list_display表示要显示哪些属性 class BookInfoAdmin(admin.ModelAdmin): list_display = ['id', 'btitle',

    1.9K10

    Python自动化开发学习19-Djan

    另外这里的key用的是数字,我们可以把它当做是数据库获取到的数据的自增id。 基于get方法的实现 接下来重新写一个简单的html,页面里只显示字典的name的值,其他的值都不显示出来。...,还要做外键关联,用的时候还要连表查询 # 即使不用admin,我们也可以在自己的代码里读取这个属性获取到内容,避免连表查询 blank :Admin中是否允许用户输入为空 verbose_name :...默认没有提示信息,设置后会显示在input框的下方 validators :自定义错误验证(列表类型),具体要等到后面讲 外键操作-一对多 上面讲的choices参数,提供了一种将数据存在内存中来提高效率的方法...对于UserInfo中新增的一列,在类中我们的属性名称是 "user_group" ,而实在在数据库中创建的自动名是 "user_group_id"。...做好外键关联。分别实现对两张表的增删改查 添加,做成模态对话框的形式 修改,目前可以用页面跳转的形式,但是要显示默认值 做一个比较好看的页面,推荐套用模板

    1.5K30

    Django 1.10中文文档-第一个应用Part2-模型和管理站点

    在这个投票应用中,我们将创建两个模型: Question和Choice。Question对象具有一个question_text(问题)属性和一个publish_date(发布时间)属性。...这不仅在数据库模式中使用,而且在验证中使用。 Field还可以有各种可选参数;在上例中,我们将votes的默认值设置为0。 最后,使用ForeignKey定义关系。...(你也可以重写这个行为); 按照惯例,Django会在外键的字段名后面添加 "_id"。(你依然可以重写这个行为); 外键关系由FOREIGN KEY约束显式声明。...不用在意DEFERRABLE部分;它只是告诉PostgreSQL直到事务的最后再执行外键关联; 这些SQL语句是针对你所使用的数据库定制的,所以会为你自动处理某些数据库所特有的字段例如auto_increment...在处理字段名的引号时也是如此 —— 例如,使用双引号还是单引号; sqlmigrate命令并不会在你的数据库上真正运行迁移文件 —— 它只是把Django 认为需要的SQL打印在屏幕上以让你能够看到

    2.3K60

    Django中ORM操作

    前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...,其主要目的是为了封装底层SQL语句; 1、字符串类(以下都是在数据库中本质都是字符串数据类型,此类字段只是在Django自带的admin中生效) name=models.CharField(max_length...: def db_type(self, connection): return 'integer UNSIGNED' PS: 返回值为字段在数据库中的属性...=6, publish_id=6) 2、类实例化:obj=类(属性=X,外键=obj)obj.save() classify_obj=models.Classify.objects.get...字段就建在子表; 如果B表的1条记录也对应A表中N条记录,两表之间就是双向1对多关系,也称为多对多关系; 在orm中设置如果 A表设置了外键字段user=models.ForeignKey('UserType

    4.8K10
    领券