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

如何让Django引用名称而不是id/pk

在Django中,我们可以通过使用slug字段或者自定义的字段来引用名称而不是id/pk。

  1. 使用slug字段:
    • 概念:slug是一种URL友好的字符串,通常用于在URL中代表模型对象的唯一标识符,而不是使用默认的自增长的id。
    • 分类:slug字段属于字符型字段。
    • 优势:使用slug字段可以使URL更加友好和可读,增加网站的可维护性。
    • 应用场景:适用于需要在URL中引用对象名称的场景,例如博客文章的URL中可以使用文章标题作为slug字段值。
    • 推荐的腾讯云相关产品:腾讯云数据库TDSQL,详情请参考:腾讯云数据库TDSQL产品介绍
  • 自定义字段:
    • 概念:在Django中,我们可以通过自定义字段来引用名称而不是id/pk。自定义字段可以根据需求实现特定的逻辑。
    • 分类:自定义字段的分类取决于具体实现的方式。
    • 优势:自定义字段可以根据业务需求进行灵活定制和扩展。
    • 应用场景:适用于需要根据特定逻辑引用对象名称的场景,例如使用对象的标题、名称或其他唯一标识符。
    • 推荐的腾讯云相关产品:腾讯云云服务器CVM,详情请参考:腾讯云云服务器CVM产品介绍

总结: Django提供了多种方式来让引用名称而不是id/pk,其中使用slug字段或自定义字段是常见的方法。通过使用这些字段,可以使URL更加友好和可读,增加网站的可维护性。在腾讯云中,推荐使用腾讯云数据库TDSQL来存储对象数据,并使用腾讯云云服务器CVM来部署和运行Django应用。

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

相关·内容

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快速入门——投票程序(4,6)表单&界面、风格

使用method="post" (不是 method="get" )是非常重要的,因为提交这个表单的行为将改变服务器端的数据。当你创建一个改变服务器端数据的表单时,使用method="post"。..., question_id): question = get_object_or_404(Question, pk=question_id) try: selected_choice...• 在增加Choice的得票数之后,代码返回一个 HttpResponseRedirect 不是常用的 HttpResponse,HttpResponseRedirect只接收一个参数:用户将要被重定向的...因为 AppDirectoriesFinder 的存在,你可以在 Django 中以 polls/style.css 的形式引用此文件,类似你引用模板路径的方式。...警告 {% static %}模板标签在静态文件(例如样式表)中是不可用的,因为它们不是Django 生成的。

25220
  • django 1.8 官方文档翻译: 2-3-1 模型实例参考

    无论如何,如果你这么做了,小心不要改变了调用签名——任何改变都可能阻碍模型实例被保存。尝试使用下面这些方法之一,不是重写init: 1....在调用save() 之前无法知道ID 的值,因为这个值是通过数据库不是Django 计算。...pk 属性 Model.pk 无论你是自己定义还是Django 为你提供一个主键字段, 每个模型都将具有一个属性叫做pk。它的行为类似模型的一个普通属性,但实际上是模型主键字段属性的别名。...如果你使用数据库中已经存在的主键值创建一个新的对象,Django 将假设你正在修改这个已存在的记录不是创建一个新的记录。...通过将更新基于原始字段的值不是显式赋予一个新值,这个过程可以避免竞态条件而且更快。Django 提供F 表达式 用于这种类型的相对更新。

    1.9K10

    First Django App!

    本篇笔记继续跟着django官方文档创建了一个投票的应用。   它由两部分组成: 一个人们查看和投票的公共站点。 一个让你能添加、修改和删除投票的管理站点。   ...1、使用Django可视化管理数据   表已经创建好了,如何使用django自带的后台可视化管理数据呢,这需要我们注册一下。...同理,我们配置下Django的路由,就可以每个视图,各回各家,各找各妈了。...% question_id)   定义一个新的视图后,我们需要为这个视图配置url的规则。   但是,按照上述的设计,每个详情都应该对应一个URl,那我们是不是要写好多URL?   ...('/vote/', views.vote, name='vote'), ]   注意,第二个和第三个匹配准则中,路径字符串中匹配模式的名称已经由 <question_id

    2.1K10

    Django admin管理工具的使用、定制及源码解析

    /model名称/ /admin/app名称/model名称/add/ /admin/app名称/model名称/ID值/history/ /admin/app名称/model名称/ID值/change...但是,我们看到标题并不是我们想要的,那么如何设置标题呢? 添加一行代码:colored_status.short_description = u"状态" ? 在函数结束之后添加上面代码即可 ?...注册的时候使用admin_site.register,不是默认的admin.site.register。 ? 效果如下: ?...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。...我们可以先自定义一个字段(上面提到过),这个字段可以每次点击的时候帮我们做一些事情,比如:复制本条数据 自定义字段这个功能我们没问题,但是如何它帮我们复制数据呢?

    4K40

    Django教程 —— 模型类条件查询

    引言 在之前的 Django模型设计 中简单的介绍了如何利用模型类对数据库进行增删改查,在这篇中主要介绍使用模型类对数据库进行条件查询。大家更加熟悉 Django 操作数据库。...环境 环境名称 版本 Python 3.7.9 Django 3.1.2 MySql-Server 5.7.32 PyMySQL 0.10.1 数据库表: 以如下数据表数据进行测试: id title...通过 属性名_id 表示外键对应对象的 id 值。 语法如下: 属性名称__比较运算符=值 说明:属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。...books = BookInfo.objects.filter(~Q(pk=3)) 注意:pk,全称 primary key 代表主键 id 聚合函数 使用 aggregate() 过滤器调用聚合函数。...我们不是键盘侠,我们只是平凡世界中不凡的缔造者 。

    1.1K20

    Django admin 一些有用的设置

    admin.ModelAdmin):     list_display = ('first_name', 'last_name', 'colored_name') 实际代码(注意看上面代码,是写在models里,不是...但是,我们看到标题并不是我们想要的,那么如何设置标题呢? 添加一行代码:colored_status.short_description = u"状态" ? 在函数结束之后添加上面代码即可 ?...注册的时候使用admin_site.register,不是默认的admin.site.register。 ? 效果如下: ?  后经网友提示发现也可以这样: ?...=obj.pk).machine         disk_id = self.model.objects.get(pk=obj.pk).disk_id         disk_code = self.model.objects.get...我们如何修改这个app的名称达到定制的要求呢,其实Django已经在文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。

    2.6K70

    django之urls系统

    例如,应该是^articles 不是 ^/articles。 每个正则表达式前面的'r' 是可选的但是建议加上。...P[0-9]{2})/$', views.article_detail), ] 这个实现与前面的示例完全相同,只有一个细微的差别:捕获的值作为关键字参数不是位置参数传递给视图函数。...Django 提供一个办法是URL 映射是URL 设计唯一的地方。...如果你的URL 模式叫做comment,另外一个应用中也有一个同样的名称,当你在模板中使用这个名称的时候不能保证将插入哪个URL。 在URL 名称中加上一个前缀,比如应用的名称,将减少冲突的可能。...我们建议使用myapp-comment 不是comment。 命名空间模式 即使不同的APP使用相同的URL名称,URL的命名空间模式也可以你唯一反转命名的URL。

    1.3K70

    django基础之二

    Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻辑,并在适当的时候调用Model和Template        此外,Django还有一个url分发器,它的作用是将一个个...内部连接MySQL时使用的是MySQLdb模块,python3中还无此模块,所以需要使用pymysql来代替         # 如下设置放置的与project同名的配置的 __init__.py文件中...P\w*)', views.manage,{'id':333}),           4.4、为路由映射设置名称             url(r'^home', views.home,...{'pk':11}) {% url 'app01:detail' pk=12 pp=99 %} django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的...,想其他页面也继承一些样式,可以将此页面设置成模板。

    1.7K40

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

    P 将会定义名称用于标识匹配的内容; \d+ 是一个用于匹配数字序列(即一个数字)的正则表达式。 因为 URL 模式是正则表达式,所以你可以毫无限制地使用它们。...Django 将会选择第一个找到的按名称匹配的模板, 如果你在 不同 应用中有相同的名称的模板,Django 将无法区分它们。...哲理 为什么我们要使用一个 get_object_or_404() 辅助函数 不是在更高级别自动捕获 ObjectDoesNotExist 异常, 或者由模型 API 抛出 Http404 异常不是...在实际的 Django 项目中,可能有 5、10、20 或者 更多的应用。Django如何区分它们的 URL 名称的呢?...比如说,polls 应用有一个 detail 视图,可能会在同一个项目中是一个博客应用的视图。Django如何知道 使用 {% url %} 模板标记创建应用的 url 时选择正确呢?

    1.8K50

    Django搭建blog网站(一)

    于是引出这么几个问题: Django 如何接收 HTTP 请求? Django 如何处理这个 HTTP 请求? Django 如何生成 HTTP 响应?...例如这里的 {{ post.pk }}(pk 是 primary key 的缩写,即 post 对应于数据库中记录的 id 值,该属性尽管我们没有显示定义,但是 Django 会自动为我们添加)。  ...P[0-9]+)/这个正则表达式,正则表达式部分会被后面传入的参数 pk 替换,所以,如果 Post 的 id(或者 pk,这里 pkid 是等价的) 是 255 的话,那么 get_absolute_url...}) 视图函数很简单,它根据我们从 URL 捕获的文章 id(也就是 pk,这里 pkid 是等价的)获取数据库中文章 id 为该值的记录,然后传递给模板。...出于安全方面的考虑,任何的 HTML 代码在 Django 的模板中都会被转义(即显示原始的 HTML 代码,不是经浏览器渲染后的格式)。

    5.7K91
    领券