我正在構建一個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. 靜態字段的替代方法
- 4. 使用靜態主要方法的非靜態代碼
- 5. CUDA全局靜態數據的替代?
- 6. 在java中使用泛型的抽象靜態/靜態替代方法的替代方案
- 7. 用於存儲數據的數據庫的替代方法?
- 8. 替代嘲笑一個靜態方法
- 9. 用於Java源代碼的靜態代碼解析器提取方法/評論
- 10. 硬編碼的憑據防止靜態文件加載
- 11. java數據庫中靜態方法和單例的替代解決方案
- 12. 編程「靜態」的另一種方法是:代碼正常嗎?
- 13. 用於Spring的靜態最終替代方案DI
- 14. C#替代虛擬靜態方法和靜態子類
- 15. 靜態代碼分析:方法參數上的所有調用
- 16. C++擺脫單身的:替代仿函數和靜態方法
- 17. PHP中靜態方法的構造函數替代
- 18. 靜態函數中@Value註釋的替代方法
- 19. 用於編碼URL的urllib.urlencode的替代
- 20. 靜態位置的GeoFire替代方案
- 21. 靜態成員的替代方案
- 22. Spring中靜態JdbcTemplate的替代方案
- 23. 用於任意數據的Prolog代碼(以便它不必被硬編碼)
- 24. 使用靜態類和方法代替asp.net中的會話
- 25. 靜態代碼分析方法
- 26. 用於讀取/寫入數據庫的靜態方法
- 27. C#中靜態接口方法的替代方案
- 28. C#中的靜態抽象方法(特定用例的替代方法)
- 29. 用於保存顯示數據的WebView.savePicture()的替代方法
- 30. 用於發送數據的window.onbeforeunload的替代方法?
作爲答案說,「選擇」是你想要的。但真正的「選擇」只能工作而不是'ForeignKey'。如果這個人既是男性又是女性? – Jayen 2017-03-26 07:31:18