私は簡単な課金システムを設定しています。そこでは、ユーザーと課金される予定の日を記載したテーブルがあります。各ユーザーには、このテーブルの1つの行のみが関連付けられています。
その日に請求されるユーザーのリストを取得するために、データベースを毎日照会する必要があります。
モデルは次のとおりです。
class BillingDay(models.Model):
user = models.ForeignKey(User)
day = models.IntegerField(max_length=2)
日フィールドに対してどのように照会しますか? User.objects.filter(billingday=1)
IDを見ていますが、私は値が1のユーザーのリストを取得する必要があると考えています day
に billingday
回答:
回答№1は4User.objects.filter(billingday__day=1)
しかしメモのように、あなたは再考することを望むかもしれませんあなたがウサギの穴をあまりにも遠くに過ぎる前に、これをどうやって設定するのですか?ユーザーには複数の請求日がありますか?私の推測はノーとなるでしょう。 BillingDay
モデル。複雑さと断片データを追加するだけです。請求日は、ユーザープロフィールのフィールドにすることができます。
今、ユーザのためのユーザプロファイルを作成することは、原則として、 BillingDay
余分なデータを追加する方法としてのモデル User
しかし、これははるかに拡張性があります。Djangoには、ユーザプロファイルをすべてのユーザに関連付ける方法が組み込まれています User
同じユーザープロファイルオブジェクトに対して、より多くのデータを保存できます。一方、 BillingDay
1つのデータポイントに降格され、後で他のデータポイントの追加モデルを追加する必要があります(データの複雑性と断片化が増えます)。
見る ユーザプロファイルに関するDjangoのドキュメント.