我正在构建一个Django应用程序,我需要为所有用户代表性别(男/女)。单个用户可以选择他们对男性,女性或两者感兴趣。然后,该数据将用于与其他用户交叉引用以查找相似之处。用于性别的ManytoManyField显然可以工作,但由于性别是一个相当静态的领域,只有两个选项,有没有更好的方法来实现它?是否存在某种具有多选功能的字段,不需要数据库无意中听到m2m字段?
答案 0 :(得分:2)
绝对不喜欢M2M - 这将变得昂贵,并且随着时间的推移很难用大量的双下划线表示法查询。对于静态内容,您特别需要choices
。
多年来我学到的一个更有用的编码实践是James Bennets博客的一个想法是他使用选择的方式: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)
答案 1 :(得分:0)
您可以存储字符串或int,并使用choices