我正在构建一个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