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

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

動(dòng)態(tài)實(shí)例特定的 Django 字段創(chuàng)建

動(dòng)態(tài)實(shí)例特定的 Django 字段創(chuàng)建

紫衣仙女 2021-06-07 16:59:14
我有一種情況,用戶模型可以有“X”個(gè)需要添加的唯一字段。這些字段需要運(yùn)行查詢,所以我不能只添加一個(gè)包含 JSON 字符串的字段。例如,一個(gè)用戶可能看起來(lái)像:class User(models.Model):    name = models.CharField()    age = models.IntegerField()    sex = models.CharField()    profession = models.CharField()接下來(lái)可能是:class User(models.Model):    name = models.CharField()    age = models.IntegerField()    sex = models.CharField()    badge_number = models.IntegerField()就像我上面說(shuō)的,這些唯一的字段必須是可查詢的。幫助!
查看完整描述

2 回答

?
慕工程0101907

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

從您的問(wèn)題中不清楚這些是否完全是任意的“這些字段的任何組合都可能存在”,是否存在可以使可能的組合更容易處理的子集,或者甚至是否預(yù)定義了完整的可能字段集,但您可能至少有以下選擇之一。

  1. 編寫(xiě)一個(gè)包含所有可能字段的單個(gè) User 類(或用戶配置文件類),其中的字段可能位于一個(gè)用戶上,但不能在另一個(gè)用戶上設(shè)置為null=True.

  2. 有多個(gè)用戶類型擴(kuò)展用戶(或其超類之一)具有不同的字段。

  3. 在查詢單個(gè)用戶模型時(shí),編寫(xiě)一個(gè)自定義管理器來(lái)(昂貴地)解壓 JSON 或其他多值字段,以從查詢中手動(dòng)刪除自定義字段并將它們應(yīng)用于初步結(jié)果集。

  4. 將用戶配置文件模型鏈接到您的 User 類,然后將其子類化以添加可能字段的各種組合。

繼承可以把這種情況變成一種真正的痛苦,所以這是我會(huì)避免的......對(duì)于你描述的情況,我認(rèn)為 #1 可能是最合適的。如果null=True不適合您的用例,您的選項(xiàng)就會(huì)變得不那么可口、可讀和可維護(hù)。

注意:@henriquesalvaro 的答案是在我寫(xiě)這篇文章時(shí)提出的,似乎優(yōu)于以下選項(xiàng)。無(wú)論如何,我都會(huì)發(fā)布這個(gè),以防 JSONField 不是你可以使用的東西。


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

添加回答

舉報(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)