概述
在model定义时定义的元组如:
class PRTprocs(models.Model):
C_STG=(
(0, '需求'),
(2, '采购'),
(4,'到货'),
(6, '消耗'),
(7, '报废'),
)
id = models.AutoField(primary_key=True)
……
stage=models.IntegerField(verbose_name="处理阶段", choices=C_STG)
在创建PRTprocs实例时,需要前台提供一个参数来确定创建实例的stage值,这个值不可编辑,且需要在前台显示stage对应的阶段名称。
在各种搜索没有找到满意答案,所以自己用了一个本办法
class PRTproc_addview(PermissionRequiredMixin,generic.CreateView):
……
def get_context_data(self, **kwargs):
if 'form' not in kwargs:
kwargs['form'] = self.get_form()
mystg=int(self.request.GET.get('stg','-1'))#获取阶段码
for stgc in PRTprocs.C_STG:
if stgc[0] == mystg:
mytit = stgc
kwargs['objtitle'] = '创建印刷品的“'+mytit[1]+" ”记录信息:"
……
这里使用mytit来记录与前端传值stg相等的元组元素,并使用mytit[1]来获取显示信息。
另外,还可以使用__getitem__方法,
mytit = PRTprocs.C_STG.getitem(mystg)
但是这个函数没有仔细研究,mystg应该是作为index参数来匹配了,例如我前端传递2时获取的是“到货”而不是我想要的“采购”。其实如果我前台提交序号值,应该就能用这个办法了。但是如果是多人开发时,估计伙伴不愿意自己去数序号吧……本着问题能解决就行的原则,我没有继续研究。有兴趣的朋友可以自己研究一下,应该是比较快捷的方法。
另外,如果有时间看一下django源码中的get_xxx_display方法,应该还能找到更好的解决办法。
最后
以上就是奋斗外套为你收集整理的Django在model定义的choice元组应用在views中的全部内容,希望文章能够帮你解决Django在model定义的choice元组应用在views中所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复