我正在構建一個Django應用程序,我需要爲所有用戶表示性別(男性/女性)。單個用戶可以選擇他們對男性,女性或兩者都感興趣。這些數據將被用來與其他用戶進行交叉參考以發現相似之處。一個ManytoManyField性別顯然會起作用,但由於性別是一個相當靜態的領域,只會有兩個選擇,是否有更好的方法來實現呢?是否有某種不需要數據庫偷聽到m2m字段的多選字段?用於靜態/硬編碼數據的ManytoManyField的替代方法?
0
A
回答
2
限制可能值絕對迴避的M2M了 - 這將讓價格昂貴,只是普通很難查詢隨着時間的推移噸雙下劃線符號的。對於靜態的東西,你特別想要choices
。
一個比較實用的編碼習慣我多年的經驗是從詹姆斯班納特博客的想法是,他使用的選擇方式:http://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/
基本上,我們可以讓你做到這一點:
class MyObject(models.Model):
MALE = 0
FEMALE = 1
ROBOT = 2
MY_CHOICES = [
(MALE, 'Male'),
(FEMALE, 'Female'),
(ROBOT, 'Robot'),
]
gender = models.IntegerField(choices=MY_CHOICES)
MyObject.objects.filter(gender=MyObject.ROBOT)
0
您可以存儲字符串或一個int,並使用choices
+1
或者,您可以使用兩個布爾字段:對男性和女性感興趣。您可能會對它進行一些簡單的調整,使其更加便於用戶使用,但我認爲從數據庫的角度來看更有意義。 – 2011-12-17 16:23:42
相關問題
- 1. 靜態方法或OO替代方法?
- 2. 替代接口的靜態方法
- 3. CUDA全局靜態數據的替代?
- 4. 用於存儲數據的數據庫的替代方法?
- 5. 替代嘲笑一個靜態方法
- 6. 硬編碼的憑據防止靜態文件加載
- 7. java數據庫中靜態方法和單例的替代解決方案
- 8. 用於Spring的靜態最終替代方案DI
- 9. C++擺脫單身的:替代仿函數和靜態方法
- 10. PHP中靜態方法的構造函數替代
- 11. 用於編碼URL的urllib.urlencode的替代
- 12. 靜態成員的替代方案
- 13. 靜態位置的GeoFire替代方案
- 14. 靜態代碼分析方法
- 15. C#中的靜態抽象方法(特定用例的替代方法)
- 16. WPF:用於顯示數據的網格的替代方法?
- 17. 用於發送數據的window.onbeforeunload的替代方法?
- 18. 類的靜態方法訪問的靜態數據成員
- 19. 如何用基類對靜態關係數據進行硬編碼?
- 20. jQuery UI的佈局硬編碼/方法
- 21. 使用模板編碼靜態實例方法trampoline函數
- 22. 編譯錯誤:對非靜態方法的靜態引用
- 23. 無法從靜態上下文中引用非靜態方法編碼(字節[])
- 24. 數據庫連接用靜態方法
- 25. C++靜態對象中的類的靜態數據成員和靜態方法?
- 26. 替換硬編碼代碼的字體真棒
- 27. 如何從靜態的靜態類/方法傳遞數據?
- 28. Asp.net詞典 - 與數據庫替換硬編碼值的值
- 29. django:網址路由到硬編碼的靜態和html文件
- 30. Visual Studio靜態庫編譯器硬編碼相對路徑
作爲答案說,「選擇」是你想要的。但真正的「選擇」只能工作而不是'ForeignKey'。如果這個人既是男性又是女性? – Jayen 2017-03-26 07:31:18