2011-08-22 6 views
0

간단한 결제 시스템을 설정하고 있습니다. 여기에 사용자 및 청구될 것으로 예상되는 날짜가 나열된 테이블이 있습니다. 각 사용자는이 테이블과 연관된 하나의 행만 갖습니다.관련 개체 값을 통한 쿼리

당일 청구될 사용자 목록을 얻으려면 매일 데이터베이스를 쿼리해야합니다.

모델은 다음과 같습니다

class BillingDay(models.Model): 
    user = models.ForeignKey(User) 
    day = models.IntegerField(max_length=2) 

어떻게 날 필드에 대해 쿼리 것인가? '당신이 방법을 재고 할 수 있습니다,하지만, User.objects.filter(billingday=1)는 ID에 보이는,하지만 난 그냥 참고로 billingday

답변

4
User.objects.filter(billingday__day=1) 

day의 값으로 1 사용자의 목록을 얻을 필요가 찾고 있어요 토끼 구멍에서 너무 멀리 떨어지기 전에 이것을 다시 설정하십시오. 사용자에게 여러 청구일이 적용됩니까? 제 추측은 아니오가 될 것입니다. 그렇다면 BillingDay 모델에 대한 이유가 없습니다. 복잡성과 조각 데이터 만 추가합니다. 청구일은 사용자 프로필의 필드 일 수 있습니다.

사용자에 대한 사용자 프로필을 만드는 것이 User에 추가 데이터를 추가하는 방법으로 BillingDay 모델을 사용하는 것이 원칙적으로 다르지 않지만 훨씬 더 확장 가능합니다. Django에는 사용자 프로필을 User과 연결시키는 방법이 내장되어 있으며 시간이 지남에 따라 동일한 사용자 프로필 개체에 더 많은 데이터를 저장할 수 있습니다. 반면에 BillingDay은 단 하나의 데이터 포인트로 강등되며 나중에 다른 데이터 포인트에 대해 추가 모델을 추가해야합니다 (복잡성과 데이터 단편화가 심함).

Django's documentation on user profiles을 참조하십시오.