我是靠谱客的博主 奋斗外套,最近开发中收集的这篇文章主要介绍Django在model定义的choice元组应用在views中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部