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中的扫描仪读取文本文件中的特定字符?   java如果我们在hibernate中开始事务但不提交它,会发生什么?   Azure CosmosDB Java Springboot中的无服务器帐户不支持spring boot设置提供吞吐量或容器自动导航   附加到新对象的Java注释?   java如何将自定义文本视图添加到。在Kotlin中添加通知操作   java Shibboleth添加_OpenSAMLcookies,导致HTTP头大小>8k   分布式传感器数据(~40Hz)的高效Java观测器设计   java如何在while循环外声明数组,但在while循环中初始化它?   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   java替换二维数组的值   java如何在任务栏上创建Windows7加载栏   java如何在组件注释bean中使用会话或RequestScope bean?   java netbeans freermarker插件错误:在实现版本中请求netbeans桥的插件Lexer   java谷歌地图方向。加载失败,返回服务器错误   java当我试图递归地计算两个值之间的整数之和时,为什么结果返回一个奇怪的值?   java如何通过html文件的用户获取运行时输入,以使用Jsoup进行解析?