首页
学习
活动
专区
工具
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、ericwillie。 3处,我们遍历用户列表,并打印每位用户的用户名ID。...Django询问要将既有主题关联 到哪个用户时,我们将指定其中的一个ID。 3. 迁移数据库 知道用户ID后,就可以迁移数据库了。...3处,Django给我 们提供了两种选择:要么现在提供默认,要么退出并在models.py添加默认4处,我们 选择了第一个选项,因此Django让我们输入默认(见5)。

13710
  • 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.5K40

    Django之ORM数据库

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

    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篇(一)

    DjangoDjango把控制器变成了Template,其实是一样的,就是名字不一样了,他把自己的模式叫做MVT。 不同的是:V变成了MVCC的功能相同,TMVC的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 后台管理(adminDjango给我们提供了很快生成后台的管理页面。

    1.1K30

    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从入门到精通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

    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.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 # 去访问。

    99020

    【愚公系列】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 1.10文文档-第一个应用Part7-自定义管理站点

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

    3.6K60

    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”Django 管理网站的核心知识点整理大全52

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

    16510

    Python自动化开发学习19-Djan

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

    1.4K30

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

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

    2.3K60

    DjangoORM操作

    前言 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
    领券