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

如何在django管理中对只读M2M字段进行排序

在Django管理中对只读M2M字段进行排序的方法如下:

  1. 首先,确保你的Django项目中已经安装了Django的admin模块。
  2. 在你的models.py文件中,定义一个只读的ManyToMany字段,并设置related_name属性,以便在管理界面中引用它。
代码语言:txt
复制
from django.db import models

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

class Author(models.Model):
    name = models.CharField(max_length=100)
    books = models.ManyToManyField(Book, related_name='authors')
  1. 在admin.py文件中,注册你的模型,并创建一个自定义的ModelAdmin类。
代码语言:txt
复制
from django.contrib import admin
from .models import Author

class AuthorAdmin(admin.ModelAdmin):
    readonly_fields = ('books',)

    def books(self, obj):
        return ", ".join([book.title for book in obj.books.all()])

    books.short_description = 'Books'

admin.site.register(Author, AuthorAdmin)

在上面的代码中,我们定义了一个自定义的ModelAdmin类AuthorAdmin,并将books字段设置为只读字段。然后,我们定义了一个books方法,该方法返回一个逗号分隔的作者的所有书籍标题。最后,我们将books方法设置为只读字段的short_description。

  1. 现在,在Django管理界面中,你将能够看到作者模型的books字段,并且该字段是只读的。你可以根据需要对该字段进行排序。

这是一个基本的方法来在Django管理中对只读M2M字段进行排序。根据你的具体需求,你可以进一步定制和优化这个方法。

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

相关·内容

Django admin管理工具

admin组件使用 Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。...激活管理工具 通常我们在生成项目时会在 urls.py 自动设置好, from django.conf.urls import url from django.contrib import admin...Mode的某个类注册,即可在Admin实现增删改查的功能,: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用...= ('FK字段', 'M2M字段',) 12  fields,详细页面时,显示字段字段 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdmin...字段",) # 或filter_horizontal = ("m2m字段",) 17 ordering,列表时,数据排序规则 @admin.register(models.UserInfo) class

1K10

Django内置Admin

Django内置的Admin是对于model对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.contrib.contenttypes...定制Admin 在admin.py只需要讲Mode的某个类注册,即可在Admin实现增删改查的功能, 1 admin.site.register(models.UserInfo) 但是,这种方式比较简单...,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,: 1 2 3 4 5 6 7 8 9 10 11 方式一:     class UserAdmin(admin.ModelAdmin...= ('FK字段', 'M2M字段',) 17. fields,详细页面时,显示字段字段 1 2 3 @admin.register(models.UserInfo) class UserAdmin...):     filter_vertical = ("m2m字段",) # 或filter_horizontal = ("m2m字段",) 22. ordering,列表时,数据排序规则 1 2 3

1.4K90

Admin组件

本篇文章通过 admin源码简单分析admin内部原理 ,扩展使用方式,为以后进行定制和自己开发组件做铺垫。 Admin的使用 Django 提供了基于 web 的管理工具。...使用管理工具 先用 python manage.py startapp app01 创建一个app,然后在models.py创建相应的类进行数据库迁移使用python manage.py makemigrations...Mode的某个类注册,即可在Admin实现增删改查的功能,: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用...'FK字段', 'M2M字段',) 12 fields,详细页面时,显示字段字段 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdmin...字段",) # 或filter_horizontal = ("m2m字段",) 17 ordering,列表时,数据排序规则 @admin.register(models.UserInfo) class

1.6K30

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

Mode的某个类注册,即可在Admin实现增删改查的功能,: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用...字段",) # 或filter_horizontal = ("m2m字段",) 17 ordering,列表时,数据排序规则 @admin.register(models.UserInfo) class...:“user__user_name” 3、颜色显示 想某些字段设置颜色,可用下面的设置: 1 2 3 4 5 6 7 8 9...我们可以对这些字段进行排列设置等。 若不任何设置,如下图所示: ? 这个界面比较简陋,需要稍加设置即可。 1、编辑界面设置 首先多ManyToMany多字段设置。...1 expired.admin_order_field = 'end_date' # 使自定义字段 可以通过单击进行排序 ?

4K40

Django之admin的使用和源码剖析

admin组件使用 Django 提供了基于 web 的管理工具。 Django 自动管理工具是 django.contrib 的一部分。...激活管理工具 通常我们在生成项目时会在 urls.py 自动设置好, from django.conf.urls import url from django.contrib import admin...Mode的某个类注册,即可在Admin实现增删改查的功能,: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用...('FK字段', 'M2M字段',) 12  fields,详细页面时,显示字段字段 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdmin...字段",) # 或filter_horizontal = ("m2m字段",) 17 ordering,列表时,数据排序规则 @admin.register(models.UserInfo) class

2.1K00

django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)

它被用在 Django 管理后台和自动生成的表单Django 自带数十种内置的字段类型;详见 model 字段参考(model field reference)。...在管理后台编辑该对象的表单,它显示在字段下面。即使你的对象无须在后台进行管理,它对于文档化也是很有用的。 primary_key 如果为 True,那么这个字段就是 model 的主键。...这种情况下,两个外键指向同一个 model 是允许的;但这个 model 会被视为多多关系不同的双方进行处理。...但是,只要你的字段名称与数据库的列名不同,就可以绕过这些限制。详见 db_column 选项。 SQL 保留字, join, where 和 select, 可以做为 model 字段的名称。...例如,在上面的代码,如果去掉 related_name 属性,在 ChildA m2m 字段的反向名称就是 childa_set;而 ChildB 的 m2m 字段的反向名称就是 childb_set

3.1K30

Web | Django 与数据库交互,你需要知道的 9 个技巧

与其他非阻塞应用程序服务器( Tornado,asyncio 甚至 Node)不同,Django 通常使用同步工作进程。...典型的例子是 M2M(多多)关系的直通模型: class Membership(Model): group = ForeignKey(Group) user = ForeignKey(...M2M 模型的另一个常见模式是在两个字段一起作为一个唯一约束。...组合索引列的顺序(Order of columns in composite index) 具有多个列的索引称为组合索引。在 B-Tree 组合索引,第一列使用树结构进行索引。...为了充分利用它,列的值必须大致排序或聚集在磁盘上。 现在回到 Django,我们有哪些常被索引的字段,最有可能在磁盘上自然排序?没错,就是 auto_now_add。

2.8K40

Django 模型继承 BaseModel

从抽象基类继承来的字段可被其它字段或值重写,或用 None 删除。 很多用户来说,这种继承可能就是你想要的。它提供了一种在 Python 级抽出公共信息的方法,但仍会在子类模型创建数据表。...比如,在上述代码,若省略了 related_name 属性, ChildA 的 m2m 字段的反转名会是 childa_set , ChildB 的是 childb_set。...你也许不期望总对 “Persion” 进行排序,但是在使用代理时,总是依据 “last_name” 属性进行排序: class OrderedPerson(Person): class Meta...在 Django ,模型字段通常不允许这样做。如果一个非抽象模型基类有一个名为 author 的字段,你就不能在继承自该基类的任何类,创建另一个名为 author 的模型字段或属性。...若你在祖先模型重写了任何模型字段Django 会抛出一个 FieldError。

2K10

django 1.8 官方文档翻译:2-1-1 模型语法

最低限度的验证需求,它被用在 Django 管理站点和自动生成的表单Django 自带数十种内置的字段类型;完整字段类型列表可以在模型字段参考 中找到。...详见自增主键字段。 主键字段只读的。如果你在一个已存在的对象上面更改主键的值并且保存,一个新的对象将会在原有对象之外创建出来。...你还可以创建递归的关联关系(对象和自己进行一关联)和 与尚未定义的模型的关联关系;详见模型字段参考。...例如,在上面的代码,如果去掉 related_name属性,在 ChildAm2m 字段的反向名称就是 childa_set;而 ChildB的 m2m 字段的反向名称就是 childb_set。...因此,如果你要保证这两个 model 同步并程序进行改动,那么就会变得繁冗而脆弱。 另一个不同之处是两者 管理器的处理方式不同。

4.9K20

Django admin 一些有用的设置

Django自带的后台管理Django明显特色之一,可以让我们快速便捷管理数据。后台管理可以在各个app的admin.py文件中进行控制。以下是我最近摸索总结出比较实用的配置。...我们可以对该界面进行设置,主要包括列表和筛选器。 1、记录列表基本设置 比较实用的记录列表设置有显示字段、每页记录数和排序等。 ?...:“user__user_name” 3、颜色显示 想某些字段设置颜色,可用下面的设置: ?...我们可以对这些字段进行排列设置等。 若不任何设置,如下图所示: ? 这个界面比较简陋,需要稍加设置即可。 1、编辑界面设置 首先多ManyToMany多字段设置。...9.自定义列表字段 上面的一多和多多可以数据编辑显示,但在列表没有显示。有时还需要显示一些其他东西。例如两个字段相乘计算结果等等。这些都可以通过自定义列表字段处理和显示。

2.5K70

零基础使用Django2.0.1打造在线教育网站(二十六):xadmin的进阶开发

字段只读字段隐藏,搜索框,inlines,一张表分两个model来进行管理添加数据,直接列表页编辑,列表页显示章节数,显示自定义的html代码,列表页定时刷新,字段联动功能,xadmin源码目录简说...默认排序字段只读字段隐藏 我们以课程为例,来介绍这3个小功能。...打开couses/adminx.py文件,在CourseAdmin中加入以下代码: # 默认排序:以点击数排序 ordering = ['-click_nums'] # 字段只读:点击数只允许读取 readonly_fields...:以点击数排序 # ordering = ['-click_nums'] # # # 字段只读:点击数只允许读取 # readonly_fields = ['click_nums...plugin插件 - static 静态文件夹,里面有js,css - template 这是xadmin自己使用的html文件 - templatetags 这是tag模板 总而言之,xadmin它是Django

1.3K20

Django之model查select的用法

between and,对应SQL:select * from User where id between 3 and 8 User.objects.filter(id__range=[3, 8]) # 排序...,order by,先按name进行正序排列,如果name一致则再按照id倒叙排列 User.objects.filter(name='运维咖啡吧').order_by('name','-id') 进阶操作...从而避免解析元组的麻烦 User.objects.values_list('username', flat=True) # int字段取最大值、最小值、综合、平均数 from django.db.models...User where role like 'sre_%' and (name='公众号' or name='运维咖啡吧') 通常更多的时候我们用Q来做搜索逻辑,比如前台搜索框输入一个字符,后台去数据库检索标题或内容是否包含...能用ORM的就用它ORM吧,不建议执行原生SQL,可能会有一些安全问题,如果实在是SQL太复杂ORM实现不了,那就看看下边执行原生SQL的方法,跟直接使用pymysql基本一致了 from django.db

73940

Django内置权限扩展案例

Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建三个权限...,为了方便操作,我们考虑把DB跟用户组关联,在用户组里的用户都有权限,而操作类型经过分析主要有两类读和写,那么需要给每个MySQL实例添加两个字段分别记录对此实例有读和写权限的用户组 如下代码在原来的model...基础上添加read_groups和write_groups字段,DB实例跟用户组应是ManyToManyField多多关系,一个实例可以关联多个用户组,一个用户组也可以属于多个实例 class Mysql...需要根据group去反查都有哪些DB实例包含了该组,这里用到了M2M的related_name属性:group.read.all() 更多关于Django ORM查询的内容可以看这篇文章Django...Django有第三方的基于object的权限管理模块Django-guardian,本项目没有使用主要是因为一来权限需求并不复杂,自己实现也很方便,二来个人在非必要的情况下并不喜欢引用过多第三方的包,后续升级维护都是负担

87120

Django Admin后台管理

4.自定义管理页面 Django提供了自定义管理页面的功能,是通过自定义模型管理类来实现的。...admin.py的list_display添加get_name方法 list_display = ['id', 'name', 'addr', 'get_name'] 显示效果如下 注:属性列在后台管理页面是可以进行排序的...但在模型类字段方法设置第一个参数verbose_name可以实现自定义标题,ame = models.CharField(verbose_name='学校名', max_length=20)。...右侧过滤器,会将对应字段的值列出来,用于快速过滤,通过list_filters属性设置。上方搜索框,用于指定字段的值进行搜索,支持模糊查询,通过search_fields属性进行设置。...5.其他 富文本编辑器 后台管理员如果需要在后台编辑带样式的文字,编辑商品的详细信息描述,就需要使用富文本编辑器。这里以tinymce为例在Django Admin后台中如何使用富文本编辑器。

2.7K10
领券