Запрос по значению связанного объекта - PullRequest
0 голосов
/ 23 августа 2011

Я настраиваю простую систему выставления счетов, где у меня есть таблица, в которой перечислены пользователи и день, когда они должны быть выставлены.С каждым пользователем связана только одна строка этой таблицы.

Мне нужно ежедневно запрашивать базу данных, чтобы получить список пользователей, которым будет выставлен счет в этот день.это:

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

Как бы я запросил в поле дня?User.objects.filter(billingday=1) смотрит на идентификатор, но мне нужно получить список пользователей с 1 в качестве значения для day в billingday

1 Ответ

4 голосов
/ 23 августа 2011
User.objects.filter(billingday__day=1)

Как примечание, вы, возможно, захотите переосмыслить то, как вы это настраиваете, прежде чем зайти слишком далеко в кроличью нору. Будет ли у пользователей несколько дней оплаты? Мое предположение было бы нет. Если это так, то нет причины для модели BillingDay. Это только добавляет сложность и фрагменты данных. Платежный день может быть просто полем в вашем профиле пользователя.

Теперь создание профиля пользователя для пользователя в принципе ничем не отличается от использования модели BillingDay в качестве способа добавления дополнительных данных к User, но это гораздо более расширяемо. Django имеет встроенные методы для привязки профиля пользователя к каждому User, и вы можете со временем добавлять больше данных к одному и тому же объекту профиля пользователя. Принимая во внимание, что BillingDay будет передано только одной точке данных, и вам позже придется добавить дополнительные модели (более сложные и фрагментированные данные) для других точек данных вниз по линии.

См. Документацию Django по профилям пользователей .

...