2011-12-17 2 views
0

모든 사용자에 대해 성별 (남성/여성)을 나타낼 필요가있는 장고 앱을 만들고 있습니다. 단일 사용자는 남성, 여성 또는 둘 다에 관심이 있다고 선택할 수 있습니다. 이 데이터는 유사점을 찾기 위해 다른 사용자와 상호 참조하는 데 사용됩니다. 젠투에 대한 ManytoManyField는 명확하게 작동하지만 성별은 매우 정적 인 필드이므로 두 가지 옵션 만 사용할 수 있습니다. 더 좋은 방법은 구현하는 것입니까? 데이터베이스가 m2m 필드를 들여다 보지 않아도되는 일종의 다중 선택 가능 필드가 있습니까?정적/하드 코딩 된 데이터에 대한 ManytoManyField의 대안은 무엇입니까?

+0

이며,'choices'는 여러분이 원하는 것입니다. 하지만 실제로'choices'는'ForeignKey' 대신에 작동합니다. 그 사람이 남녀 모두라면? – Jayen

답변

2

를 사용하여 가능한 값을 제한 할 수 있습니다 - 이중 밑줄 표기의 톤과 함께 시간이 지남에 따라 쿼리 비용과 그냥 일반 어려워 것이다. 정적 물건의 경우 특별히 choices이 필요합니다. 나는 지난 몇 년 동안 배운 유용한 코딩 관행의

하나는 그가 선택 사용하는 방법 제임스 Bennets 블로그에서 아이디어입니다 :

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) 
: 기본적으로 http://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/

를 보자는이 작업을 수행 할 수 있습니다 답으로 대답은

0

당신은 문자열이나 int를 저장하고, 확실히 멀리 M2M 부끄러워 choices

+1

또는 두 개의 부울 필드를 사용할 수도 있습니다. 남성 및 여성에 대한 관심입니다. 좀 더 사용자 친화적 인 방식으로 약간의 형식을 조정할 수도 있지만, DB 관점에서 보면 더 합리적이라고 생각합니다. –

관련 문제