Django Xadmin多对多字段过滤实例

在xadmin中是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段

进入xadmin源码,找到了formfield_for_dbfield这个方法,测试是有用的,可以过滤第一个选项框的值

补充知识:给django admin后台管理user扩展下拉框及多选框的字段

1.首先在models.py中编写扩展User所用到的userProfile模型及下拉框和多选框选项值所需要的模型(因为我所做的下拉框和多选框的值都是从数据库里面取得),代码如下:

2.第二步编写admin.py对User字段进行扩展,代码如下:

# -*- coding: UTF-8 -*-
from django.contrib import admin
from django import forms
from TESTAPP.models import test,userProfile
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

# Register your models here.
class userProfileForm(forms.ModelForm):
  option = forms.ModelChoiceField(label=u'下拉框',queryset=test.objects.all())
  checkbox = forms.ModelMultipleChoiceField(label=u'多选框',queryset=test.objects.all(),widget=forms.CheckboxSelectMultiple())
  class Meta:
    model = userProfile
    fields = ['option','checkbox']
class profileInline(admin.StackedInline):
  model = userProfile
  form = userProfileForm
class testUserAdmin(UserAdmin):
  inlines = [profileInline,]
admin.site.unregister(User)
admin.site.register(User, testUserAdmin)

通过这两步就可以试下在django admi台管理User中扩展一个下拉框和一个多选框,效果如下图:

以上这篇Django Xadmin多对多字段过滤实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • django xadmin 管理器常用显示设置方式

    课程管理器: class CourseAdmin(object): # 设置列表显示字段 list_display = ['name', 'course_org', 'detail','degree','learn_times','students','fav_nums','image','click_nums','add_time'] # 设置列表查询字段 search_field = ['name', 'course_org', 'detail','degree','learn_times'

  • 解决Django部署设置Debug=False时xadmin后台管理系统样式丢失

    对于使用Django框架开发的系统,当部署时设置settings.py文件中Debug=False时xadmin后台管理系统样式会丢失. [问题原因]: django的生产环境不同开发环境,在生产环境下(DEBUG=False),django.contrib.staticfiles 是不起任何作用的,也就说 django.contrib.staticfiles 只对开发环境(DEBUG=True)开启.所以会导致xadmin样式丢失现象. [解决方案]: ①在settings.py中添加如下配置

  • Django admin 实现search_fields精确查询实例

    我就废话不多说了,还是直接看代码吧! search_fields = (u'gift_rule_id',u'user_id', u'activity_id',) //默认的查询集合 def get_queryset(self, request): return super(GiftConfirmAdmin, self).get_queryset(request).all().order_by("-id") //根据关键字进行查询集合 def get_search_results(sel

  • django xadmin中form_layout添加字段显示方式

    需求: 用的是django的框架,想显示一个基本固定的页面,用到了form_layout 上图的ROW中添加的是model中的字段名,可以显示对应的内容,如果想一行显示多个,可以写成 Row('Flow_type', 'Demand_name'),效果如下图(图片是别人的,借鉴一下) 想正常的显示,还有最后一步就是在把你需要展示的ROW中的字段,放在fields中(部分截取了一下) 补充知识:xadmin 编辑页隐藏字段 引用xadmin 的fieldSet 对不想显示的字段添加**{"styl

  • Django Xadmin多对多字段过滤实例

    在xadmin中是不能像原生admin那样使用formfield_for_manytomany方法来过滤多对多字段 进入xadmin源码,找到了formfield_for_dbfield这个方法,测试是有用的,可以过滤第一个选项框的值 补充知识:给django admin后台管理user扩展下拉框及多选框的字段 1.首先在models.py中编写扩展User所用到的userProfile模型及下拉框和多选框选项值所需要的模型(因为我所做的下拉框和多选框的值都是从数据库里面取得),代码如下: 2.

  • django ManyToManyField多对多关系的实例详解

    Django 的 ORM 有多种关系:一对一,多对一,多对多 各自定义的方式为 : 一对一: OneToOneField 多对一: ForeignKey 多对多: ManyToManyField 上边的描述太过数据而缺乏人性化,我们来更人性化一些: 多个属于一个,即 belong to : ForeignKey,多个属于一个 一个有一个,即 has one: OneToOneField 一个有很多个,即 has many: lots of A belong to B 与 B has many A

  • 使用 django orm 写 exists 条件过滤实例

    要用django的orm表达sql的exists子查询,是个比较麻烦的事情,需要做两部来完成 from django.db.models import Exists, OuterRef # 1. 定义子查询条件 relative_comments = Comment.objects.filter( post=OuterRef('pk'), # 注意外键关联方式:post为Comment表的字段,pk表示关联另一表主键 ) # 2. 使用annotate和filter共同定义子查询 Post.ob

  • Django --Xadmin 判断登录者身份实例

    一,为了让xadmin 登录者只能看到自己创建的数据 1,model class UserTB(models.Model): name=models.CharField('姓名',max_length=30,blank=True,null=True) email=models.CharField('邮箱',max_length=200,blank=True,null=True) integral = models.IntegerField('积分', default=0) create_time

  • Django 多对多字段的更新和插入数据实例

    表的普通字段 一对多字段 多对多字段 插入数据 #插入数据 def add(request): G_title=request.POST.get('title')#-------值为:python书本 G_publish=request.POST.get('publish') #-------值为:1 G_authors_list=request.POST.getlist('authors')#-------值为:[3,7] publish_obj=Publish.objects.get(id=

  • xadmin使用formfield_for_dbfield函数过滤下拉表单实例

    环境:Django 2.0.7 xadmin 2.0.1 需求:下拉表单显示的是模型的其他表项或者外键 方法:在adminx.py文件中,在class YourModel Admin中重写函数 # 重写formfield_for_dbfield,设计add和edit表单 def formfield_for_dbfield(self, db_field, **kwargs): if not self.request.user.is_superuser: # 对case这个表项的下拉框选择进行过滤

  • 对django xadmin自定义菜单的实例详解

    1. 自定义菜单 adminx.py class GlobalSetting(object): site_title = u'xxx后台' def kuF_site_menu(self): return [{ 'title': u'用户&账户', 'perm': self.get_model_perm(User, 'view'), 'icon':'fa fa-users', 'menus':( {'title': u'用户', 'url': self.get_model_url(User, 'c

  • django 在原有表格添加或删除字段的实例

    一.如果models.py文件为时: timestamp = models.DateTimeField('保存日期') 会提示: (env8) D:\Desktop\env8\Scripts\mysite>python manage.py makemigrations You are trying to add a non-nullable field 'timestamp' to article without a defa ult; we can't do that (the databas

  • django admin后管定制-显示字段的实例

    先说需求: 1.django 自带了admin后管,如果我们需要使用,只需把我们定义的models注册即可: 2.但如果只是简单注册,那显示的很简单,根本看不到每行记录的描述信息,全部以model object 形式显示,必须点击进去才能看到信息,太不方便,如下图: 1.显示关键信息 效果如下图,这样就好看多啦. 2.配置 在 admin.py 文件中配置一下就行. admin.py # Underwriter admin model class UnderwriterAdmin(admin.M

随机推荐