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

如何限制在ForeignKey/ManyToMany Wagtail ModelAdmin字段中显示的项?

在 Wagtail 的 ModelAdmin 中,可以通过重写 get_queryset 方法来限制在 ForeignKey/ManyToMany 字段中显示的项。

对于 ForeignKey 字段,可以使用 limit_choices_to 参数来指定限制条件。例如,假设有一个 Author 模型和一个 Book 模型,Book 模型有一个 author 字段,可以通过以下方式限制 author 字段中显示的选项:

代码语言:txt
复制
from django.db import models
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from myapp.models import Book

class BookAdmin(ModelAdmin):
    model = Book
    menu_label = 'Books'
    menu_icon = 'book'
    menu_order = 200
    add_to_settings_menu = False
    exclude_from_explorer = False
    list_display = ('title', 'author')

    def get_queryset(self, request):
        qs = super().get_queryset(request)
        # 限制 author 字段中只显示姓氏为 "Smith" 的作者
        qs = qs.filter(author__last_name='Smith')
        return qs

modeladmin_register(BookAdmin)

对于 ManyToMany 字段,可以使用 formfield_for_manytomany 方法来限制显示的选项。例如,假设有一个 Book 模型有一个 authors 字段,可以通过以下方式限制 authors 字段中显示的选项:

代码语言:txt
复制
from django.db import models
from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from myapp.models import Book

class BookAdmin(ModelAdmin):
    model = Book
    menu_label = 'Books'
    menu_icon = 'book'
    menu_order = 200
    add_to_settings_menu = False
    exclude_from_explorer = False
    list_display = ('title', 'authors')

    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == 'authors':
            # 限制 authors 字段中只显示姓氏为 "Smith" 的作者
            kwargs['queryset'] = db_field.remote_field.model.objects.filter(last_name='Smith')
        return super().formfield_for_manytomany(db_field, request, **kwargs)

modeladmin_register(BookAdmin)

以上示例中,get_queryset 方法和 formfield_for_manytomany 方法都用于限制显示的选项,可以根据具体需求进行修改。

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

相关·内容

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

    @admin.register(Blog) class BlogAdmin(admin.ModelAdmin): #listdisplay设置要显示列表字段(id...1、编辑界面设置 首先多ManyToMany多对多字段设置。...4.设置只读字段 使用admin时候,ModelAdmin默认对于model操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑。...7.对单条数据 显示样式修改 需求如下: ? 每条数据都有 个确认标识(上图红框),如果已经确认,用户再点击进入查看信息时候全部只读显示,即不能在做修改,如果没确认可以修改。...我们可以先自定义一个字段(上面提到过),让这个字段可以每次点击时候帮我们做一些事情,比如:复制本条数据 自定义字段这个功能我们没问题,但是如何让它帮我们复制数据呢?

    4K40

    关于若依Python(Django-Vue-Admin)一些设置

    1.恢复原生admin后台: 系统并没有包含原生admin后台界面,开发过程如果要看数据没有和前端对接情况下要看数据智能通过数据库管理工具链接数据库查看,这个就很蛋疼了。...要修复这个问题,首先创建用户管理类: 1)models添加: class MyUserManager(BaseUserManager): def create_user(self, username..._db) return user 2)user添加: objects = MyUserManager() 现在就可以正常通过命令创建superuser了。...---- 分享文章: 相关文章: Django admin Foreignkey ManyToMany list_display展示 Django 限制访问频率 再谈《Django 限制访问频率》...django raw_id_fields 显示名称而不是id(raw_id_fields: How to show a name instead of id) ubuntu uwsgi No module

    3.3K30

    django 1.8 官方文档翻译: 2-5-6 多数据库

    这个例子目的是演示如何使用路由这个基本结构来改变数据库使用。它有意忽略一些复杂问题,目的是为了演示如何使用路由。...如果该主键值second 数据库没有使用,那么你不会遇到问题 —— 该对象将被复制到新数据库。...第一个站点上,Author 和 Publisher 对象被暴露出来;Publisher 对象具有一个表格内联,显示该出版社出版书籍。第二个站点只暴露Publishers,而没有内联。...因为跨数据库关联是不可能,这对你如何在数据库之间划分这些模型带来一些限制: contenttypes.ContentType、sessions.Session和sites.Site 可以存储分开存储不同数据库...(包括不是存储同一个数据库模型)。

    1.5K20

    Django2.0文(admin)

    admin.site.register(Book) 4 models设置允许空值 models.EmailField(blank=True) null=True 5 自定义admin后台管理显示标签...) //////list_display=('xx','b') //////search_fields=('a','b') ////// date_hierarchy='xx_date' 右上角有个日期导航条...///filter_horizontal和filter_vertical选项只能用在多对多字段 上, 而不能用于 ForeignKey字段。 默认地,管理工具使用下拉框 来展现外键 字段。...但是,正如多对多字段 那样,有时候你不想忍受因装载并显示这些选项而产生大量开销。...例如,我们book数据库膨胀到拥有数千条publishers记录,以致于book添加页面装载时间较久,因为它必须把每一个publishe都装载并显示在下拉框 9 ForeignKey:用raw_id_fields

    43920

    自定义 Django 管理界面多对多内联模型

    例如,如果存在一个产品模型和一个发票模型,并且产品和发票之间是多对多关系,那么发票管理界面,Django 会显示一个表格,其中包含所有产品及其对应复选框。...这个方法负责返回一个表单集,表单集中每个表单对应于内联模型一个对象。 get_formset() 方法,使用 formset_factory() 函数创建表单集。... formset_factory() 函数,指定 model 参数为内联模型模型类,并指定 fields 参数为内联模型需要显示字段。...这两个方法分别负责判断用户是否有添加和修改内联模型对象将新内联模型类添加到 ModelAdmin ModelAdmin inlines 属性,添加新内联模型类。...下面是一个示例代码,演示了如何自定义多对多内联模型显示方式:from django.contrib import adminfrom django.contrib.admin.utils import

    11510

    使用 Django admin 定制后台,丰富自己网站后台管理系统

    ModelAdmin 详细参数 查看源码 为了更好了解 Django 管理类有哪些基本属性,我们可以去 Django 源码查找这个类源代码,看一下它有哪些默认属性和方法。...,一般按照时间比较好 date_hierarchy = 'create_date' exclude = ('views',) # 查看修改时候显示属性,第一个字段带有<...exclude 这个属性是用来设置不需要展示字段,接受一个元祖或者列表,只要设置了字段就不会在后台显示,比如这个例子我不想要后台显示文章阅读量。...fields 属性是与 exclude 属性相对字段,这个字段包含是需要在后台显示模型字段,所以一般他们不同时出现。...,这样相当于把一些相似的字段归类,方便查看,例如上面这个后台展示效果如图: list_display 属性是在后台显示模型实例列表时候需要显示模型字段字段顺序根据给顺序来列出,如图:

    3.1K10

    使用Django实现把两个模型类数据聚合在一起

    ,编辑子表 默认情况下,ModelAdmin只允许您管理模型“本身”字段,而不是相关模型.以下方法将实现,应用类列表管理显示页面,显示父表字段;在编辑页面,父表对子表进行编辑. models.py...应用类列表管理显示页面,显示父表字段 可以让Students,显示父表Grades父表Level字段 models.py里Students类里,写上如下代码: class Students(...models.Model): # 写一个方法,定义管理页面上能够显示外键字段字段 # grade为Students模型外检表,level为Grades模型外检表,那么为Level模型字段...= '年级' # 定义该字段管理后台显示名称 dis_level.short_description = '年级' # 方法列是不能排序,如果需要排序需要为方法指定排序依据。...添加是'模型类字段' # 如果是外键需要遵循这样语法:本表外键字段__(双下划线)外检表字段或外检表外键字段__最终外键表要显示字段

    1.4K20

    35.Django2.0文档

    不允许同一个模板定义多个同名 {% block %} 。 存在这样限制是因为block 标签工作方式是双 向。...3.设置字段可选  你或许会发现管理工具有个限制:编辑表单需要你填写每一个字段,然而在有些情况下,你想要某些字段是可选。 举个例子,我们想要Author模块email字段成为可选,即允许不填。...我们可以在这基础上改进,添加其它字段,从而改变列表显示。比如说:在这个列表可以看到作者邮箱地址,为了达到这个目的,我们将为Author模块定义一个ModelAdmin类。...我们只自定义了一:list_display,它是一个字段名称元组,用于列表显示。当然,这些字段名称必须是模块中有的。...例如,我们book数据库膨胀到拥有数千条publishers记录,以致于book添加页面装载时间较久,因为它必须把每一个publisher都装载并显示`` 下拉框``

    11.3K100

    Django admin 一些有用设置

    @admin.register(Blog) class BlogAdmin(admin.ModelAdmin):     #listdisplay设置要显示列表字段(id字段是Django模型默认主键...1、编辑界面设置 首先多ManyToMany多对多字段设置。...4.设置只读字段  使用admin时候,ModelAdmin默认对于model操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑。...7.对单条数据 显示样式修改  需求如下: ? 每条数据都有 个确认标识(上图红框),如果已经确认,用户再点击进入查看信息时候全部只读显示,即不能在做修改,如果没确认可以修改。...9.自定义列表字段 上面的一对多和多对多可以数据编辑显示,但在列表没有显示。有时还需要显示一些其他东西。例如两个字段相乘计算结果等等。这些都可以通过自定义列表字段处理和显示

    2.6K70

    ​第 07 篇:创作后台开启,请开始你表演!

    支持 Markdown 语法部分中将介绍如何在文章插入图片方法。...: •admin 后台本身页面元素是已经汉化了,但是我们自己 blog 应用,以及 Post、Category、Tag 页面显示却是英文,以及发布文章时候,表单各字段 label 也是英文...如下图所示: 其次是新增 post 页面的表单,各个字段 label 由定义 Post 类 Field 名转换而来,比如 Post 模型定义了 title 字段,则对应表单 label 就是...接下来是让应用下注册 model 显示为中文,既然应用是 apps.py 配置,那么和 model 有关配置应该去找相对应 model 。...此前我们 blog/admin.py 定义了一个 PostAdmin 来配置 Post admin 后台一些展现形式。list_display 属性控制 Post 列表页展示字段

    1.1K20

    Django_rest框架电商项目实践项目(一篇文章讲清楚电商项目)项目的创建与基本配置,所有接口代码,项目代码已给

    商品分类查询 view代码 url代码 前端调用书写 分类查询基础上面,需要排序 根据生产厂商进行选择 view url 前段传参 商品详情 view url 前端如何传参 查询外键需要返回具体...offset=6 前端如何限制每一页有几条数据,可以使用limit 前提是view里面要写这个 pagination_class = LimitOffsetPagination 以上就可以实现...,对于列表展示分页功能 实现根据字段进行排序和模糊搜索 以上可以实现对列表查询,并且实现了分页,但是现在我们想要根据某一个字段进行排序和模糊搜索,我们可以在对应接口里面的view代码里面这样配置...用户登录成功,就跳转到用户详情页面,已进入这个页面,那就调用用户详情接口,在这个接口view里面进行权限限制 如果成功,就回显数据,如果失败,那么就跳转到登录页面 用户注册 往用户表和会员档案里面保存数据...# 创建完成字段,这个里面设置就是不会把这个字段返回给前端 extra_kwargs={'password':{'write_only':True}} # 重写父类创建方法

    2.8K10

    四、其它(一)ModelAdmin对象InlineModelAdmin对象重写admin模板Paginator对象Page对象示例

    中加入django.contrib.admin,Django就会自动搜索每个应用admin模块并将其导入 ModelAdmin对象 ModelAdmin类是模型Admin界面表示形式 定义:定义一个类...) class HeroAdmin(admin.ModelAdmin): 通过重写admin.ModelAdmin属性规定显示效果,属性主要分为列表页、增加修改页两部分 列表页选项 “操作选项”位置...True actions_on_bottom = True  list_display 出现列表显示字段 列表类型 列表,可以是字段名称,也可以是方法名称,但是方法名称默认不能排序 方法可以使用...list_filter = ['hname', 'hcontent'] list_per_page 每页显示多少,默认设置为100 class HeroAdmin(admin.ModelAdmin)...search_fields = ['hname'] 增加与修改页选项 fields:显示字段顺序,如果使用元组表示显示到一行上 class HeroAdmin(admin.ModelAdmin):

    4.5K20

    用python搭建一个校园维基网站(二)—— 可编辑内容首页创建

    默认生成models.py定义了一个简单HomePage类(继承自wagtailPage类)来代表一个页面(即默认欢迎页)模型(该简单模型可编辑内容部分只有title字段)。...我们WikiHome页面模型需要图中红色高亮一系列字段,其中title字段继承自Page类,不用额外添加,image字段为连接到wagtailimages.Image模型外键。...还包含了一个wagtail提供ForeignKey进行了一层封装ParentalKey外键连接到它所属WikiHome页面。类似的,panels表明出现在可编辑区。 ? ?...WikiHomeTopLink类似,为了层次上更清晰,采用了多重继承,models.py只定义ParentalKey外键,而在另一个文件定义了RelatedLink模型,包含字段有链接文本和具体链接...wiki文件夹下models.py文件旁新建一个snippets.py文件 实际上,它还是创建了一个Django模型,只包含了一个富文本字段,但是利用Wagtail提供register_snippet

    3.6K80

    Django admin管理工具

    你可以项目的 settings.py INSTALLED_APPS 看到它: # Application definition INSTALLED_APPS = [ 'django.contrib.admin...admin.py只需要讲Mode某个类注册,即可在Admin实现增删改查功能,如: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多定制操作...): list_display = ('user', 'pwd',) ModelAdmin中提供了大量可定制功能,如  1. list_display,列表时,定制显示列。...Actions" actions = [func, ] # Action选项都是页面上方显示 actions_on_top = True # Action选项都是页面下方显示...FK字段', 'M2M字段',) 12  fields,详细页面时,显示字段字段 @admin.register(models.UserInfo) class UserAdmin(admin.ModelAdmin

    1K10

    django admin 给 字段 增加 HTML 样式(显示图片、设置字体颜色、超链接、按钮等)

    django admin 后台样式默认情况下都是默认样式,有时候我们需要在 admin 显示一张图片、或者更改一个文案显示颜色等等,该怎办呢?...以下方法采用 model 里更改,也可以 admin 里面更改。...原理:新增自定义字段,然后给该字段渲染时赋予 HTML 标签(标签有的属性都可以使用) model.py 实现此效果 1. ... model 里增加想要显示字段:thumb_shouw # models.py from django.db import models from django.db.models.signals...admin.py 实现此效果 注意:不要跟该 model 里任何一个字段名相同 class CommentTemporaryAdmin(admin.ModelAdmin): """ 临时评论表

    2.9K40
    领券