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

Python django需要返回名称而不是id foreginkey

在Python Django中,如果需要返回外键字段的名称而不是其对应的id,可以通过在模型类中使用__str__方法来实现。

__str__方法是Python中的一个特殊方法,用于返回对象的字符串表示。在Django中,当我们在模型类中定义了__str__方法时,它将会在我们打印模型对象或在其他地方需要显示模型对象的字符串表示时被调用。

下面是一个示例:

代码语言:txt
复制
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Product(models.Model):
    name = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

在上面的示例中,我们定义了两个模型类:CategoryProductProduct模型类有一个外键字段category,它关联到Category模型类。

通过在Category模型类中定义__str__方法,我们可以让Django在需要显示Category对象的字符串表示时返回其名称而不是id。同样地,在Product模型类中也定义了__str__方法,以返回产品的名称。

这样,当我们在Django的管理界面或其他地方需要显示Product对象时,它将以名称而不是id的形式呈现。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库MySQL。

  • 腾讯云云服务器(CVM):提供可扩展的计算能力,可用于部署和运行Django应用程序。了解更多信息,请访问:腾讯云云服务器(CVM)
  • 腾讯云数据库MySQL:可靠、高性能的关系型数据库服务,适用于存储Django应用程序的数据。了解更多信息,请访问:腾讯云数据库MySQL
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django raw_id_fields 显示名称不是id(raw_id_fields: How to show a name instead of id

为了防止页面加载的时候加载所有的Foreignkey到内存,django提供了一个raw_id_fields,该tupple内的数据将只展示id。虽然内存不加载了,但是基本没法看。...如果要展示相关的名称可以使用django-dynamic-raw-id: A Django admin raw_id_fields widget replacement that handles display.../ 具体效果: 嗯,非常直观~ 测试环境:python 3.7.2 + django 3.7.2 settings.py中关闭debug之后可能会出现上面的情况,没有显示名称,执行一下python...☆文章版权声明☆ * 网站名称:obaby@mars * 网址:https://h4ck.org.cn/ * 本文标题: 《django raw_id_fields 显示名称不是id(raw_id_fields...: How to show a name instead of id)》 * 本文链接:https://h4ck.org.cn/2020/06/django-raw_id_fields-%e6%98%

1.9K20
  • django 1.8 官方文档翻译: 2-5-2 进行原始的sql查询

    通常,Django通过将模型的名称和模型的“应用标签”(你在manage.py startapp中使用的名称)进行关联,用一条下划线连接他们,来组合表的名称。...更多细节请查看db_table选项的文档,它也可以让你自定义表的名称。 警告 传递给raw()方法的sql语句并没有任何检查。django默认它会返回一个数据集,但这不是强制性的。...通常,Python DB API会返回不带字段的结果,这意味着你需要以一个列表结束,不是一个字典。...如果你不熟悉Python DB-API,注意cursor.execute()中的sql语句使用占位符“%s”,不是直接在sql中添加参数。如果你使用它,下面的数据库会在必要时自动转义你的参数。...也要注意Django使用“%s”占位符,不是SQLite Python绑定的“?”占位符。这是一致性和可用性的缘故。 Django 1.7中的改变。

    93620

    Django路由控制URL详解

    此模块是纯Python代码,是URL路径表达式与Python函数(您的视图)之间的映射。该映射可以根据需要缩短或缩短。它可以引用其他映射。并且,因为它是纯Python代码,所以它可以动态构造。...,不是之前的圆括号; 可以转换捕获到的值为指定类型,比如例子中的int。...返回一个UUID对象; path:匹配任何非空字符串,重点是可以包含路径分隔符’/‘。这个转换器可以帮助你匹配整个url不是一段一段的url字符串。...如果你的URL 模式叫做comment,另外一个应用中也有一个同样的名称,当你在模板中使用这个名称的时候不能保证将插入哪个URL。在URL 名称中加上一个前缀,比如应用的名称,将减少冲突的可能。...我们建议使用myapp-comment 不是comment。 3.6 名称空间 命名空间(英语:Namespace)是表示标识符的可见范围。

    1.1K20

    2018年10月8日django查看版本命令,python2&3中print区别,iterable报错,SSH,pycharmubuntu颜色设置

    查看Django版本的命令: 1. 在终端中输入: python -m django –-version 2....———————————————————————— pyhton2中和python3中print的区别: 1.python3中print是一个内置函数,有多个参数,python2中print是一个语法结构...; 2.Python2打印时可以不加括号:print 'hello world', Python3则需要加括号   print("hello world"), 必须要加括号,因为3中它是一个函数。...,比如('hhh'),那么他就不是元组,print ('hhh')在py2和py3中都是打印hhh,毕竟('hhh')=='hhh',所以py2才会视他为字符串不是元组。...一般这个错误的原因是django中得到查询对象用的方法是get方法,改成filter方法就可以了,因为get方法只会得到一个对象,filter方法会根据查询的条件如果有多个对象就返回多个对象。

    72730

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

    Django 中,网页及其他内容是由视图来展现的。每个视图就是一个简单的 Python 函数(或方法, 对于基于类的视图情况下)。...P 将会定义名称用于标识匹配的内容; \d+ 是一个用于匹配数字序列(即一个数字)的正则表达式。 因为 URL 模式是正则表达式,所以你可以毫无限制地使用它们。...Django 将会选择第一个找到的按名称匹配的模板, 如果你在 不同 应用中有相同的名称的模板,Django 将无法区分它们。...哲理 为什么我们要使用一个 get_object_or_404() 辅助函数 不是在更高级别自动捕获 ObjectDoesNotExist 异常, 或者由模型 API 抛出 Http404 异常不是...还有个 get_list_or_404() 函数,与 get_object_or_404() 一样 – 不过执行的是 filter() 不是 get() 。

    1.8K50

    django 1.8 官方文档翻译: 3-1-2 编写视图

    网站:http://python.usyiyi.cn/django/index.html 编写视图 一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web...注意视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。...Django中的时区 Django中包含一个TIME_ZONE设置,默认为America/Chicago。可能并不是你住的地方,所以你可能会在设置文件里修改它。...返回错误 在Django返回HTTP错误是相当容易的。有一些HttpResponse的子类代表不是200(“OK”)的HTTP状态码。...你可以返回那些子类的一个实例,不是普通的HttpResponse ,来表示一个错误。

    55230

    Django 3.1 官网学习路线

    Django 编写的每个应用程序都由一个遵循特定约定的 Python 包组成。Django 附带一个工具,它可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码,不是创建目录。...如前所述,默认应用程序是为常见情况包含的,但不是每个人都需要它们。如果您不需要它们中的任何一个或全部,那么可以在运行 migrate 之前随意地注释或删除 INSTALLED_APPS 中的适当行。...sqlmigrate 命令接受迁移名称返回它们的 SQL. python manage.py sqlmigrate polls 0001 看到如下信息: D:\Django_study> python...要调用 Python Shell,请使用以下命令: python manage.py shell 我们使用它,不是简单地输入“python”,因为 manager .py 设置了 DJANGO_SETTINGS_MODULE...字符串的:question_id> 部分定义了将用于标识匹配模式的名称 <int:部分是一个转换器,用于确定哪些模式应该匹配 URL 路径的这一部分。

    8.2K10

    37.Django1.11.6文档

    view_func是 Django会调用的一个Python的函数。 (它是一个真实的函数对象,不是函数的字符名称。)...特殊情况是ClearableFileInput,当initial未设置时返回False,CheckboxSelectMultiple,它始终返回False,因为浏览器验证将需要检查所有复选框,不是至少一个...你需要查找clean() 中该字段的值,记住此时它已经是一个Python 对象不是表单中提交的原始字符串(它位于cleaned_data 中是因为字段的self.cleaned_data 方法已经验证过一次数据...get_username() 永远返回空字符串。 is_anonymous是True不是False。 is_authenticated是False,不是True。...会话对象指南 在request.session 上使用普通的Python 字符串作为字典的键。 这主要是为了方便不是一条必须遵守的规则。

    24.3K80

    Python 任务自动化工具:nox 的配置与 API

    会话名称 默认情况下,Nox 使用被装饰函数的名称作为会话的名称。这对于绝大多数项目都非常有效,但是,如果需要,你也可以使用 @nox.session 的 name 参数来自定义会话的名称。...): pass 当你提供一个版本号时,Nox 会自动添加 python 来确定可执行文件的名称。...最后,你还可以指定每次都重用 virtualenv,不是重新创建: @nox.session( python=['2.7', '3.6'], reuse_venv=True) def...@nox.session @nox.parametrize('django', [ nox.param('1.9', id='old'), nox.param('2.0', id='new...例如,如果你想将 Nox 的 virtualenvs 存储在不同的目录中,需要每次都将它传递给 nox: import nox nox.options.envdir = ".cache" @nox.session

    1.4K10

    初探Django框架

    ,会判断,这个随机字符串是不是第一次它发给用户的那个,如果是,则数据提交成功,如果不是,则返回403权限错误。...注意:此时引用路径中的要用配置文件中的别名 static,不是目录 statics。...b.如果涉及到数据调用,那么视图函数调用模型,模型去数据库查找数据,然后逐级返回。 模型将视图函数所需要的数据返回到视图函数中, 然后视图函数再把返回的数据填充到模板中空格中,最后返回网页给用户。...实际上我们需要明白的一点是, Django的模型和数据库间的交互并不是完全由Django内部的组件完成的, 而是依靠pymysql这些独立于Django之外,需要另外安装的模块来完成。...因为QueryDict不是很突出所以也就不多说了。 Django 视图 一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。

    2K20

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

    对于极简主义者来说:INSTALLED_APPS包含的默认应用用于常见的场景,但并不是每个人都需要它们。...您将在Python代码中使用此值,您的数据库将使用它作为列名称。 您可以使用字段的可选第一个位置参数来指定一个更通俗的名称。这在Django的一些内省部分中使用,它也可以作为文档。...如果你有兴趣,你也可以运行python manage.py check;这将检查您的项目中的任何问题,不进行迁移或触摸数据库。...使用如下命令来调用Python shell: python manage.py shell 我们使用上述命令不是简单地键入“python”进入python环境,是因为manage.py 设置了DJANGO_SETTINGS_MODULE...它就是我们先前创建的一个question,并且通过str方法的帮助,显示了较为直观的信息,不是一个冷冰冰的对象类型名称。 ? 点击What’s up?进入编辑界面: ?

    2.3K60

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

    , topic) ... 1 Chess 2 Rock Climbing 我们将返回的查询集存储在topics中,然后打印每个主题的id属性和字符串表示。...从输出可 知,主题Chess的ID为1,Rock Climbing的ID为2。 知道对象的ID后,就可获取该对象并查看其任何属性。...其中的r让Python将接下来的字符串视为原始字符串,引号 告诉Python正则表达式始于和终于何处。脱字符(^)让Python查看字符串的开头,美元符号让 Python查看字符串的末尾。...每当需要提供到这个主页的链接时,我们 都将使用这个名称不编写URL。 注意 正则表达式通常被称为regex,几乎每种编程语言都使用它。它们的用途多得难以置信, 但需要经过一定的练习才能熟悉。...现在,如果你请求这个项目的基础URL——http://localhost:8000/,将看到刚才创建的网页, 不是默认的Django网页。

    10910

    django 1.8 官方文档翻译: 3-1-1 URL调度器

    需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 不是 ^/articles。 每个正则表达式前面的’r’ 是可选的但是建议加上。...处理冲突 URL 模式捕获的命名关键字参数和在字典中传递的额外参数有可能具有相同的名称。当这种情况发生时,将使用字典中的参数不是URL 中捕获的参数。...不只限制在合法的Python 名称。 当命名你的URL 模式时,请确保使用的名称不会与其它应用中名称冲突。...我们建议使用myapp-comment 不是comment。 URL 命名空间 简介 URL 命名空间允许你反查到唯一的命名URL 模式,即使不同的应用使用相同的URL 名称。...’ 将是实例的命名空间’author-polls’ 将是应用的命名空间,不是反过来的。

    1.3K20

    Django MVT之M

    字段类型 Django中每个模型类都会被映射为数据表,模型类属性则被映射为数据表中的字段。...使用时,需引入django.db.models包,常用字段类型如下: 字段类型 描述 AutoField 根据实际ID自动增长的整数字段,通常不需要直接使用,Django会自动生成ID字段并且自动增长。...FloatField FloatField使用的是Python内部的 float 类型,DecimalField使用的是Python的 Decimal类型。...与python的列表不同的是,下标不允许为负数。 谓词 Django的查询条件是一种独特的字段查询表达方式,表现形式为: 字段名称__谓词=值 即用‘双下划线连接的字段名称和谓词’来表示查询的条件。...即id__exact=1可以简写为id=1。 F对象 用于模型类A属性与B属性进行比较,使用之前需要导入F类。

    1K10

    Python全栈开发之Django基础

    ,如果所有URLconf都没有匹配成功,返回404错误 # app01/views.py from django.conf.urls import include, url from django.contrib...对象关系映射,是随着面向对象思想发展产生的,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,关系数据库则是从数学理论发展而来的...P\d+)/$',views.show_arg), 内置错误视图,如果想看到错误视图不是调试信息的话,需要修改setting文件的DEBUG选项 # mysite/setting.py DEBUG...一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器,Cookie名称和值可以由服务器端开发自己定义,这样服务器可以知道该用户是否是合法用户以及是否需要重新登录等...如果想防止CSRF,首先是重要的信息传递都采用POST方式不是GET方式 防止CSRF Django提供了csrf中间件用于防止CSRF***,只需要在mysite/settings.py中启用csrf

    3.8K20
    领券