1. 程式人生 > 程式設計 >Django Xadmin多對多欄位過濾例項

Django Xadmin多對多欄位過濾例項

在xadmin中是不能像原生admin那樣使用formfield_for_manytomany方法來過濾多對多欄位

Django Xadmin多對多欄位過濾例項

進入xadmin原始碼,找到了formfield_for_dbfield這個方法,測試是有用的,可以過濾第一個選項框的值

Django Xadmin多對多欄位過濾例項

補充知識:給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多對多欄位過濾例項

以上這篇Django Xadmin多對多欄位過濾例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。