日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

django實現模型字段動態choice的操作

瀏覽:40日期:2024-10-13 14:52:56

需求是根據當前登錄用戶來顯示某個choice字段不同的選擇項。

先放現在的實現版本。

1、重寫PushRuleForm的__init__方法,

讓每次實例化PushRuleForm時,test_mode字段的choices根據用戶重新賦值

class PushRuleForm(forms.ModelForm): def __init__(self, *args, **kwargs): if self.request.user.username in Const.TEST_USER_LIST: # 如果進入都是add添加新項的頁面 if not kwargs.get(’instance’):# self.fields[’test_mode’].initial = 1self.fields[’test_mode’].choices = [(1,’Test’)] # else: # self.fields[’test_mode’].choices = [choice for choice in [(0,’OnLine’),(1,’Test’)] if self.instance.test_mode in choice]

2、重寫PushRuleAdmin的changeform_view方法,進入add和change頁面都會調用changeform_view方法,都能讓form獲取request屬性,所以重寫這個方法比較好,PushRuleForm獲取request屬性后,form表單處理是就能通request.user.username取用戶名

class PushRuleAdmin: form = PushRuleForm def changeform_view(self, request, object_id=None, form_url=’’, extra_context=None): self.form.request = request return super(PushRuleAdmin, self).changeform_view(request, object_id, extra_context=extra_context)

mode.py對應的代碼如下:

class PushRule(models.Model): test_mode = models.IntegerField(verbose_name=’TestMode’, default=0, choices=[(0,’OnLine’),(1,’Test’)])

實現方式2:

,重寫PushRuleAdmin的render_change_form方法,傳入test_user_list上下文,通過js來判斷當前用戶是否是測試用戶。

class PushRuleAdmin: def render_change_form(self, request, context, add=False, change=False, form_url=’’, obj=None): context[’test_user_list’]=Const.TEST_USER_LIST return super(PushRuleAdmin, self).render_change_form(request, context, add=False, change=False, form_url=’’, obj=None)

js代碼:

if (test_user_list.includes(username)) { $('#id_test_mode > option[value=’0’]').remove(); }

html模板代碼:

為了讓js獲取django模板變量,先定義一個username和test_user_list變量

<script> var username='{{ user.username }}', test_user_list='{{ test_user_list }}'</script>

不過這么的壞處是用戶列表信息直接暴露在前端代碼里了,跟直接在js里維護一個測試用戶列表一樣的效果,遂放棄這種做法

實現方式3:

后端寫一個視圖接口,返回對應的test_user_list,js里寫一個ajax請求,來請求這個視圖獲取test_user_list

實測沒有問題。

實現方式4:

類似方法2,只不過不通過js來處理,直接通過django模板來處理,主要是重寫django/contrib/admin/templates/admin/includes/fieldset.html這個模板文件,對django模板語法不太熟,遂放棄。

未實現的思路,想在PushRuleAdmin中直接修改model的test_mode字段的chioce選項,不過沒實現,

想修改model的fields,不過發現他是一個ImmutableList類型,修改會報錯。

不過stackoverflow上的給出的這個方法不錯,可以參考,就是缺一個獲取用戶名的地方,哪天再看一下

補充知識:django 中優雅的使用 choice 字段

問題

django中如何比較優雅的對元組進行標記分類。可使用choice字段

choice字段

# models.pyclass BookTagNum(object): OTHER = 1 SCIENCE = 2 SOCIAL_SCIENCES = 3 ECONOMIC = 4 COMPUTER = 5class BOOK(models.Model): TAG_NUM_CHOICE = ( (BookTagNum.OTHER, ’其它’), (BookTagNum.SCIENCE, ’科學類’), (BookTagNum.SOCIAL_SCIENCES, ’社科類’), (BookTagNum.ECONOMIC, ’經濟類’), (BookTagNum.COMPUTER, ’計算機類’), ) tag = models.IntegerField(choices=TAG_NUM_CHOICE)

在代碼中盡量不要出現固定的硬編碼,比如某個判斷條件,判斷書的分類為:

# view.pydef get(self, request): book = Book.obejects.filter(tag = BookTagNum.COMPUTER)

以上這篇django實現模型字段動態choice的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本高清不卡一区二区三区视频| 日韩精品免费视频人成| 国产精品分类| 国产精品4hu.www| 国产精选一区| 国产精品红桃| 欧美a一区二区| 精品国产亚洲日本| jizzjizz中国精品麻豆| av免费不卡国产观看| 播放一区二区| 99久久久久国产精品| 国产尤物精品| 中文一区二区| 亚洲精品日韩久久| 国产精品一区二区精品视频观看 | 美女91精品| 男人的天堂久久精品| 日韩黄色av| 美女久久99| 999精品一区| 久久福利一区| 国产欧美一区二区三区国产幕精品| 精品一区二区三区中文字幕视频| 成人羞羞在线观看网站| 亚洲免费黄色| 7m精品国产导航在线| 7m精品国产导航在线| 国产一区二区三区四区五区| 欧美色图一区| 亚洲2区在线| 精品久久国产一区| 欧美日韩国产亚洲一区| 日韩欧美2区| 精品久久中文| 亚洲一区二区三区免费在线观看| 日韩不卡一二三区| 日本不卡免费高清视频在线| 国产一区二区精品| 国产精品qvod| 亚洲精品中文字幕乱码| 91精品在线免费视频| 国产理论在线| 亚洲影院天堂中文av色| 免费亚洲一区| 日韩亚洲精品在线| 国产精品天天看天天狠| 久久精品主播| 欧美日韩亚洲一区二区三区在线| 日韩精品专区| 亚洲97av| 亚洲二区精品| 国产精品qvod| 99riav1国产精品视频| 国产伦理一区| 在线国产一区二区| 久久香蕉网站| 99日韩精品| 精品久久久网| 中文字幕av亚洲精品一部二部| 精品美女在线视频| 久久国产精品久久w女人spa| 久久三级中文| 国产一级一区二区| 成人国产精品一区二区网站| 视频一区中文字幕国产| 日韩综合一区| 欧美一区在线观看视频| 亚洲欧美伊人| 麻豆视频久久| 丝袜国产日韩另类美女| 高清在线一区| 日本一区免费网站| 免费不卡中文字幕在线| 免费在线亚洲| 天堂精品久久久久| 欧美女激情福利| 都市激情国产精品| 国产精品天堂蜜av在线播放| 蜜臀精品久久久久久蜜臀 | 久久亚洲图片| 999久久久精品国产| 国产精品美女在线观看直播| 好看的亚洲午夜视频在线| 国产精品xxxav免费视频| 一本色道久久精品| 在线一区视频观看| 精品视频91| 国产日本久久| 亚洲1区在线观看| 夜夜嗨一区二区| 91精品精品| 高清久久精品| 麻豆传媒一区二区三区| 国产亚洲久久| 欧美日本不卡高清| 日韩欧美精品一区二区综合视频| 模特精品在线| 日韩视频一区| 日韩国产一区二区三区| 国产精品久久久久久久久久白浆| 日韩av在线播放中文字幕| 蜜桃传媒麻豆第一区在线观看| 樱桃成人精品视频在线播放| 欧美日韩在线网站| 999国产精品视频| 欧美羞羞视频| 久草免费在线视频| 国产精品精品| 激情中国色综合| 欧美激情一区| 久久不见久久见国语| 国产精品资源| 欧美精品91| 精品一区二区三区的国产在线观看 | 日韩精品永久网址| 中文字幕人成乱码在线观看| 国产成人精品福利| 日本а中文在线天堂| 正在播放日韩精品| 日韩在线观看一区| 欧美sss在线视频| 999久久久91| 视频一区中文| 首页欧美精品中文字幕| 影音先锋久久精品| 欧美日韩精品一区二区三区视频 | 久久av在线| 在线观看亚洲精品福利片| 亚洲精选久久| 欧美亚洲一区二区三区| 国产精品日韩精品中文字幕| 久久精品国产99国产精品| 成人精品国产亚洲| 色婷婷精品视频| 91精品国产自产在线观看永久∴ | 国内在线观看一区二区三区| 日本欧美国产| 成人久久久久| 国产亚洲在线| 亚洲麻豆一区| 国产精品亚洲综合久久| 久久亚洲精精品中文字幕| 中文字幕色婷婷在线视频| 欧美亚洲在线日韩| 国产一级一区二区| 日本一区二区中文字幕| 国产欧美日韩精品一区二区免费 | 日韩中文字幕一区二区高清99| 日本久久二区| 久久wwww| 亚洲高清成人| 综合国产在线| 精品一区二区三区的国产在线观看| av资源亚洲| 喷白浆一区二区| 国产精品777777在线播放 | 福利在线免费视频| 欧美特黄一区| 日韩精品视频一区二区三区| 久久久精品区| 日韩欧美中文| 合欧美一区二区三区| 日韩av三区| 国产一区二区三区91| 欧美二区视频| 欧美在线黄色| 日韩精品不卡一区二区| 免费精品视频最新在线| 欧美国产日本| 亚洲精品网址| 国产麻豆一区二区三区精品视频| 特黄毛片在线观看| 蜜桃视频一区二区| 国产精品久久久久77777丨| 久久九九精品| 欧美日韩一区二区三区不卡视频 | 国产情侣久久| 久久精品国内一区二区三区水蜜桃| 亚洲三级视频| 日本一二区不卡| 在线国产精品一区| 久久久久亚洲精品中文字幕| 午夜国产精品视频免费体验区| 久久国内精品视频| 999国产精品视频| 欧美日韩中出| 亚洲欧洲一区| 国产一区调教| 亚洲精品一级| 久久蜜桃资源一区二区老牛| 欧美日韩 国产精品| 欧美一级精品| 欧美日韩亚洲三区| 日韩视频一区| 日韩精品诱惑一区?区三区| 欧美另类中文字幕 | 亚洲一区国产一区| 日韩av在线播放网址| 日韩精品福利一区二区三区|