第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將組的所有用戶添加為模型字段中的選項(xiàng)

將組的所有用戶添加為模型字段中的選項(xiàng)

嗶嗶one 2021-10-26 10:59:36
我試圖將我的一個(gè)模型中的一個(gè)字段限制為可以選擇作為特定組成員的所有用戶。另一個(gè)字段為所有注冊(cè)用戶提供了一個(gè)選擇。這在 shell 中工作正常:>>> from django.contrib.auth.models import User, Group>>> all_users = User.objects.all()>>> all_users<QuerySet [<User: somedude>, <User: test>, <User: testma>]>>>> tm_users = User.objects.filter(groups__name='Testmanager')>>> tm_users<QuerySet [<User: somedude>, <User: testma>]>但是如果我在模型中放入相同的代碼:class TestPlan(models.Model):    all_users = User.objects.all()    all_user_choices = ((x.username, x.get_full_name()) for x in all_users)    tm_users = User.objects.filter(groups__name='Testmanager')    tm_user_choices = ((x.username, x.get_full_name()) for x in tm_users)    tp_title = models.CharField(max_length=200, verbose_name='Title')    tp_manager = models.CharField(max_length=100, blank=True,                                 verbose_name='Test Manager',                                  choices=tm_user_choices)    tp_tester = models.CharField(max_length=100, blank=True,                                 verbose_name='Tester',                                 choices=all_user_choices)    def __str__(self):        return f'{self.tp_title}'當(dāng)我執(zhí)行 User.objects.all() 時(shí)它會(huì)起作用,但是當(dāng)我嘗試按組過(guò)濾用戶時(shí)它會(huì)失敗。我真的不知道我在這里做錯(cuò)了什么。這是錯(cuò)誤還是功能?
查看完整描述

3 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

“choices”字段屬性不能是動(dòng)態(tài)的,必須是靜態(tài)集,例如:


MONTH_CHOICES = (

    ("JANUARY", "January"),

    ("FEBRUARY", "February"),

    ("MARCH", "March"),

    # ....

    ("DECEMBER", "December"),

)

如果您需要此限制,您可以在“django 表單”或“DRF 序列化程序”邏輯中驗(yàn)證這種情況。


查看完整回答
反對(duì) 回復(fù) 2021-10-26
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

雖然我還沒(méi)有找到原始問(wèn)題的答案,但我已經(jīng)解決了根本問(wèn)題。這樣做的方法是將模型字段定義為外鍵:


class TestPlan(models.Model):

    tp_title = models.CharField(max_length=200, verbose_name='Title')

    tp_manager = models.ForeignKey(User, on_delete=models.SET_NULL,

                    blank=True, null=True, verbose_name='Test Manager',

                    limit_choices_to={'groups__name': 'Testmanager'},

                    related_name='testmanager_set')

    tp_tester = models.ForeignKey(User, on_delete=models.SET_NULL,

                                  blank=True, null=True, verbose_name='Tester')

limit_choices_to 參數(shù)與原始帖子中的 User.objects.filter(groups__name='Testmanager') 執(zhí)行相同的操作。需要 related_name 參數(shù),因?yàn)槲椰F(xiàn)在在同一模型上有兩個(gè)外鍵字段。


查看完整回答
反對(duì) 回復(fù) 2021-10-26
  • 3 回答
  • 0 關(guān)注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)