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

Django admin如何将查询集添加为只读链接属性字段

Django admin是Django框架提供的一个强大的后台管理界面,可以方便地管理和操作数据库中的数据。在Django admin中,可以通过添加字段来显示和编辑数据库中的数据。如果想将查询集添加为只读链接属性字段,可以按照以下步骤进行操作:

  1. 在Django的模型中定义一个方法,该方法返回一个查询集。例如,我们有一个名为Book的模型,我们想将Author模型的所有作者作为只读链接属性字段显示在Book模型的后台管理界面中。可以在Book模型中添加如下方法:
代码语言:txt
复制
from django.urls import reverse
from django.utils.html import format_html

class Book(models.Model):
    title = models.CharField(max_length=100)
    # other fields...

    def authors_link(self):
        authors = self.author_set.all()
        links = []
        for author in authors:
            url = reverse('admin:your_app_name_author_change', args=[author.id])
            link = format_html('<a href="{}">{}</a>', url, author.name)
            links.append(link)
        return format_html(', '.join(links))
    
    authors_link.short_description = 'Authors'
    authors_link.allow_tags = True

在上述代码中,authors_link方法返回了Author模型的查询集,并将每个作者的名称包装在一个链接中。

  1. BookAdmin类中将该方法添加为只读链接属性字段。在admin.py文件中,定义BookAdmin类,并将authors_link方法添加为只读链接属性字段。例如:
代码语言:txt
复制
from django.contrib import admin
from .models import Book

class BookAdmin(admin.ModelAdmin):
    readonly_fields = ('authors_link',)

admin.site.register(Book, BookAdmin)

在上述代码中,readonly_fields属性指定了只读字段的名称,这里我们将authors_link方法添加为只读链接属性字段。

  1. 运行Django开发服务器,访问后台管理界面。启动Django开发服务器后,可以通过浏览器访问后台管理界面。在Book模型的编辑页面中,将会显示Authors字段作为只读链接属性字段,点击链接可以跳转到对应的Author模型的编辑页面。

这样,我们就成功地将查询集添加为只读链接属性字段。在实际应用中,可以根据需要自定义其他字段的显示方式,以满足具体的业务需求。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb-for-mysql
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析):https://cloud.tencent.com/product/mobile
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 元宇宙(Tencent Real-Time 3D):https://cloud.tencent.com/product/trtc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django:DateTimeField如何自动设置为当前时间并且能被修改 ——django日期时间字段的使用

需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段admin...中是只读的。...该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin字段也会成为只读的。 ?...admin.site.register(Tag, YourAdmin) 如何将创建时间设置为“默认当前”并且可修改 那么问题来了。...django中所有的model字段都拥有一个default参数,用来给字段设置默认值。

7.2K80

Python Django开发 经验技巧总结(一)

需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django自带的admin管理器,那么该字段admin...中是只读的。...auto_now_add: 设置为True时,会在model对象第一次被创建时,将字段的值设置为创建时的时间,以后修改对象时,字段的值不会再更新。该属性通常被用在存储“创建时间”的场景下。...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin字段也会成为只读的。...9.执行原始sql语句 (1)extra()方法: 结果修改器,一种提供额外查询参数的机制。

1.4K10
  • 37.Django1.11.6文档

    当你最初获取数据时不知道是否需要这些特定字段的情况下,如果你正在使用查询的结果,你可以告诉Django不要从数据库中检索它们。...form.instance.name = name 使用自定义查询 如前所述,您可以覆盖模型formset使用的默认查询: from django.forms import modelformset_factory...表单的表单中的每个字段都可能包含HTML属性,例如用于浏览器验证的maxlength。 ...您可以指定一个或多个字段。 只要这些字段出现在list_display中,Django不会关心多少(或多少)字段链接。 ...ModelAdmin.search_fields search_fields 设置启用Admin 更改列表页面上的搜索框。 此属性应设置为每当有人在该文本框中提交搜索查询将搜索的字段名称的列表。

    24.3K80

    Django框架学习(四)

    :可以写多个查询条件,默认是且的关系 对应get,filter,exclude参数中可以写查询条件 格式:属性名__条件名=值 1.3F对象 用于查询字段之间的比较 from django.db.models...|filter(多类名__字段__条件=值) 查英雄:多类.objects.filter(外键属性__字段__条件=值) 2.查询 注意:对于queryset类的对象,可以继续调用之前的任何一个查询函数...两大特性: 1、惰性查询:只有在使用查询集中的数据时才会进行数据库真正查询操作 2、查询结果的缓存:如果使用同一个查询时,只有在第一次使用查询时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来...,下一次再使用这个查询的时候,使用的是Django之前存储的结果。...中定义模型admin的管理类,继承于admin.ModelAdmin 2)admin.site.register(模型类,admin管理类) 3)在Admin管理类中通过对应的类属性控制admin界面内容

    1.5K41

    Python全栈开发之Django基础

    ) admin.site.register(HeroInfo) 自定义管理界面 # app01/admin.py,list_display表示要显示的字段 from django.contrib import...AutoField:自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性 BooleanField: 布尔字段,值为True或False NullBooleanField...使用aggregate()过滤器调用聚合函数,聚合函数包括:Avg,Count,Max,Min,Sum list = BookInfo.objects.count() 查询 查询表示从数据库中查询到的对象集合...(): 聚合,返回一个字典 判断一个查询集中是否有数据 两个特性 惰性 创建查询不会访问数据库,直到调用数据时,才会访问数据库 缓存 使用同一个结果,第一次使用会触发查询数据库,然后将结果缓存下载...=True 同上,只不过是底部显示的属性 字段排序 admin_order_field=[字段1,字段2] 列标题 short_description='列标题' 侧边栏过滤器 list_filter=

    3.8K20

    Django相关知识点回顾

    QuerySet(查询) exclude 查询条件 返回不满足条件的所有数据 QuerySet(查询) order_by 排序字段查询结果进行排序 QuerySet(查询) aggregate...() # 由多查1 多对象.外键属性 例:hero.hbook 2.通过模型类进行关联查询 # 查图书(一) 一类.objects.get|filter(多类名__字段__条件=值) 例:books =...查询结果的缓存 使用同一个查询时,只有在第一次使用查询时会进行数据库的查询操作,然后Django框架就会把查询的结果存起来,下一次再使用这个查询时,使用的Django之前存储的结果。...以上内容详细介绍请看文章『我是个链接』 ---- 14.Admin站点 Django自带文件存储系统,可以直接通过Admin站点进行图片的上传,默认上传的文件保存在服务器本地。...使用 1.在配置文件中设置配置项MEDIA_ROOT='上传文件的保存目录' 2.定义模型类时,图片字段的类型使用 ImageField 3.迁移生成表并在admin.py注册模型类,直接登录Admin

    10K51

    Django】 开发:数据库操作和后台管理

    ,从而得出总计值 (也可以是平均值或总和),即为查询的每一项生成聚合。...return HttpResponse('请查看服务器端控制台获取结果') F对象 一个F对象代表数据库中某条记录的字段的信息 作用: 通常是对数据库中的字段值在不获取的情况下进行操作 用于类属性...list_display_links 可以控制 list_display 中的字段是否应该链接到对象的 “更改” 页面。...的出版社是:', abook.publisher.name) 通过 Publisher 查询 对应的所有的 Book 【反向】 Django会在Publisher中增加一个属性来表示对对应的Book们的查询引用...=80) -> 获取book对应的作者中年龄大于80岁的作者的信息 通过 Author 查询对应的所有的 Book【反向】 Django 会生成一个反向属性 book_set 用于表示对对应的 book

    4.1K40

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

    字段属性primary_key用于设置主键,max_length用来设置字段的最大长度,db_column用来设置数据库中与字段对应的列,verbose_name则设置了Django后台管理系统中该字段显示的名称...(从一对多关系中“一”的一方查询“多”的一方),反向查询属性默认的名字是类名小写_set(如上面例子中的emp_set),当然也可以在创建模型时通过ForeingKey的related_name属性指定反向查询属性的名字...模型定义参考 字段字段名称的限制 字段名不能是Python的保留字,否则会导致语法错误 字段名不能有多个连续下划线,否则影响ORM查询操作 Django模型字段字段类 说明 AutoField...primary_key 将字段指定为模型的主键,未指定时会自动添加AutoField用于主键,只读。...related_name:用于获取关联对象的关联管理器对象(反向查询),如果不允许反向,该属性应该被设置为'+',或者以'+'结尾。 to_field:指定关联的字段,默认关联对象的主键字段

    2.3K30

    CRM客户关系管理系统(十一) 第十一章、学员报名流程开发

    ,返回到前端 前端显示报名链接,然后销售把报名链接发给用户 (1)crm/urls.py # crm/urls.py from django.conf.urls import url,include...身份证信息,紧急联络人,性别 有些字段只读的,填写信息的时候不能修改,因为如果设置了只读(添加属性disabled=true),提交的时候会报这些字段为空,导致提交错误 所以在前段添加了js代码,BeforeFormSubmit...  在提交前去掉disable=true(因为数据库中有默认值,提交的时候就不会报错) 防止用户通过前端改html代码的方式改只读字段的信息,所以在form.py里面添加了一个自定义的验证方法(clean...),如果只读字段提交的时候信息跟数据库中默认的不一样,就报错 (1)crm/urls.py # crm/urls.py from django.conf.urls import url,include...= form_val: #就提示只读字段不能修改 #add_error是字段级别的错误

    99000

    python测试开发django-20.添加创建时间DateTimeField

    属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin字段也会成为只读的。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值; 如果使用django自带的admin管理器,那么该字段在...admin中是只读的。...__doc__ + "title->" + self.title 当auto_now和auto_now_add被设置为True后,会导致其字段属性editable=False和blank=True的状态...后台添加一条数据,时间就是当前时间,数据库查询到也是当前时间了 ?

    1K20

    python测试开发django-20.添加创建时间DateTimeField

    属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin字段也会成为只读的。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值; 如果使用django自带的admin管理器,那么该字段在...admin中是只读的。...__doc__ + "title->" + self.title 当auto_now和auto_now_add被设置为True后,会导致其字段属性editable=False和blank=True的状态...后台添加一条数据,时间就是当前时间,数据库查询到也是当前时间了 ?

    1.2K20

    Django 2.0 新特性 转

    2.admin后台对移动端更加友好 Django最受大家欢迎的admin后台,具有响应式特性,支持主流的移动设备。 3.Window 表达式 新的Window表达式允许为查询添加一个OVER从句。...4.小特性 django.contrib.admin后台 新的ModelAdmin.autocomplete_fields属性和ModelAdmin.get_autocomplete_fields()方法现在可以在外键和多对多字段上使用...CursorWrapper.callproc()现在接收可选的字典类型关键字参数; QuerySet.values_list()新增named参数,用于获取命名的元组结果; 新的FilteredRelation类允许为查询增加一个...QuerySet.reverse()和last()不能用于切片后的查询 对切片后的查询使用反转和获取最近对象的操作将弹出异常,如下所示: >>> Model.objects.all()[:2].reverse...表单的字段不再接收可选参数作为位置参数 为了防止运行时错误,提高可靠性。

    2.6K20

    django框架菜鸟教程_django框架菜鸟教程

    /hour/minute/second F对象 F( 属性名) 属性比较 Q对象 Q(属性名__运算符=值) 实现逻辑或or的查询,需要使用Q()对象结合|运算符 Q对象前可以使用~操作符,...='八') 由一模型类条件查询多模型类数据: 一模型类关联属性名__一模型类属性名__条件运算符=值 # 查询图书阅读量大于30的所有英雄 HeroInfo.objects.filter(hbook_...save update 使用模型类.objects.filter().update(),会返回受影响的行数 4.删 模型类对象delete 模型类.objects.filter().delete() 查询...False 2、特性 惰性执行:创建查询的时候不会调用数据库,调用数据的时候访问,迭代、序列化、if合用 缓存 3、限制查询查询进行下标或切片操作,切片后返回新的查询,不会立即执行 管理器Manageer...1、自定义管理器 修改原始查询,重写all()方法 booktest/models.py文件中 #图书管理器 class BookInfoManager(models.Manager):

    3K40

    Django 2 DateTimeField格式 在程序中手动赋值

    需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段admin...中是只读的。...该属性通常被用在存储“创建时间”的场景下。与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin字段也会成为只读的。...赋值的方法 其实DateTimeField字段对应的就是Python里的datetime.datetime,也可以使用django.utils.timezone.now() 的方法来进行时间设置。...task_scenario.task_expected_end_time Out[19]: datetime.datetime(2019, 9, 19, 11, 7, 33, 471270) 在mysql中查询一下保存的时间数据看看

    72320

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

    Django 知道 ForeignKey 在管理网站中以 框显示。在本例中,选择框中仅存在一个 poll 。 另外请注意 Poll 旁边的 “Add Another” 链接。...如果你在窗口中添加了一 poll 并点击了 “Save” 按钮, Django 会将 poll 保存至数据库中并且动态的添加为你正在查看的 “Add choice” 表单中的 已选择项。...你可以通过给该方法 (在 models.py 内 ) 添加一些属性来改善显示效果,如下所示:: class Poll(models.Model): # ......当有人输入了搜索条件, Django 将搜索 question 字段。 虽然你可以使用任意数量的字段,如你希望的那样 – 但是因为它在后台用 LIKE 查询,为了保持数据库的性能请合理使用。...这个变量包含了每一个 已安装的 Django 应用。你可以通过你认为最好的方法硬编码链接到特定对象的管理页面,而不是使用默认模板。

    2.5K40
    领券