Django管理器的动态选择字段,刚刚工作。

django-admin-flexselect的Python项目详细描述


##关于django admin flexselect是django admin的一个小应用程序,它使外键相互依赖变得很简单。我所说的依赖,是指一个字段的选择和附加内容在另一个字段更改时会动态更新。


v=ooiii3ictz6o.

当我们在案例更改视图中更改客户时,公司联系人会相应地更新。此外,我们还将显示客户联系人公司
和电子邮件作为附加详细信息。

在"models.py"中:

`` python
从django.db导入模型作为m
从django.core.exceptions导入validationerror

"
"使用flexselect不需要更改模型。
"


类公司(m.model):
name=m.charfield(最大长度=80)

def unicode(self):
return self.name


class companycontactperson(m.model):
company=m.foreignkey(company)
name=m.charfield(最大长度=80)
email=m.emailfield()

def unicode(self):
return self.name

类客户机(m.model):
公司=m.foreignkey(公司)
名称=m.charfield(最大长度=80)


定义Unicode(自我):
返回self.name


类案例(m.model):
客户机=m.foreignkey(客户机)
公司联系人=m.foreignkey(company contact person)

def clean(self):
"
确保客户的公司与客户联系人的公司相同。请注意,如果不需要这些字段,则还需要检查"none"。
"如果不需要,则检查"none"。client.company==self.company_contact_person.company:
引发validationerror('the clients and the contacts company do'
"不匹配。")

def\uUnicode(self):
return u'case:d%self.id
````

in"admin.py":

``python
``python
from django.contrib import admin
from flexselect import flexselectwidget
from test\flexselect.tests.models import(company,case,client,
companycontactperson,)


触发器字段=['client']
"更改时将更新基字段的字段。"

def details(self,基字段实例,实例:
"
html附加到基域。

-基域实例:基域的实例。
-实例:从
请求加载的父模型的部分实例。

返回单一字符串。
"
return u"\
<;div>;
<;dl>;
<;dt>;%s<;%dt>;%s<;%dd>;%s<;%dd>;
<;dt>;%s<;%dt>;%s<;%dd>;
<;dl>;
<;/div>;
"%('company',base_field_instance.company,
'email',base_field_instance.email,



def queryset(self,instance):
"
返回填充基字段的queryset。如果
触发器字段之一为"无",则不会调用此函数。

-实例:从
请求加载的父模型的部分实例。
"
"company=instance.client.company
返回companycontactperson.objects.filter(company=company)

def empty_choices_text(self,实例:
"
如果任何一个触发器字段都不是,则将调用此函数
,以获取基域
的选择框中空选项的文本。

-实例:从加载的父模型的部分实例
请求。
"
"返回"请更新客户端字段"


类caseadmin(admin.modeladmin):
def formfield_for_foreignkey(self,db_field,request,**kwargs:
"
更改基本字段显示的小部件。
""
如果db_field.name=="公司联系人":
kwargs['widget']=公司联系人小部件(
基本字段=db_field,
modeladmin=self,
request=request,

kwargs['label']="contact"
返回super(caseadmin,self).formfield_表示foreignkey(db_字段,
请求,**kwargs)


class client admin(admin.modeladmin):
pass


class companycontactpersonadmin(admin.modeladmin):
pass


class companyadmin(admin.modeladmin):
pass

admin.site.register(case,caseadmin)
admin.site.register(client,clientadmin)
管理站点.注册(companycontactperson,companycontactperson admin)
管理站点.注册(company,companyadmin)
````

将"flexselect"添加到"settings.py"中的"installed_apps"。将"(r'^flexselect/",include('flexselect.urls'),`添加到"urls.py"。


默认为false,整个flexselect dict可以省略。

`` python
` flexselect设置。
flexselect={
'包含查询':true,
}
````

盒子。如果没有,则手动包括"jquery"、"jqueryui"和
"flexselect/static/flexselect/js/flexselect.js"。有关
"django.contrib.staticfiles"的更多信息,请访问
https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java变量始终存储0值。为什么?   如何使用Java/REST将Azure blob从一个存储容器移动到另一个存储容器?   java将commons DBCP从1.2升级到1.4,我应该害怕吗?   java如何使用分隔符拆分字符串?   java使用数组读取json对象   java在groovy中切片字符串   交换数组java的两个邻域元素   java移动用于确定字符串是否为回文的逻辑   java Android应用程序在一个活动中崩溃   java Sparkjava将webapp文件夹设置为静态资源/模板的文件夹   java复杂条件表达式,用户易用。   java如何仅在表存在时从表中选择值   java I无法将数据从Recyclerview传递到其他活动   java数据结构最佳设计(大数据)   java Android从DatePickerDialogFragment中删除日历视图   java将数据从Firebase获取到片段   数组。sort()在java中运行不正常