いくつかのゾーンを持つユーザー主導のアプリを作成しています。ユーザーがメッセージ設定をカスタマイズできるようにして、関心のある部分やアクションについてのみメールを受信できるようにしたいと考えています。私は以下を作成しましたClass
:
class EmailSetting(models.Model):
user = models.ForeignKey(User, related_name="%(class)s_related_user")
key = models.CharField(max_length=50)
value = models.BooleanField()
get_users(key, default)
これは、ユーザーのリストを返すと呼ばれるメソッドによって使用されます。たとえば、 に登録されているユーザーkey="new_post", default=False
のリストを要求した場合、そのキーの値が True の EmailSetting を持つユーザーのリストを取得する必要があります。EmailSetting モデルを使用するだけなので、これは非常に簡単です。
デフォルトが True の場合、物事は難しく見えます。モデルを使った基本的なルックアップよりも複雑なことはしたことがないので、手を貸す必要があります。
ユーザーの完全なリストから、False EmailSetting を持つユーザーを削除する必要があります。False エントリを探して EmailSetting で別のクエリを実行し、それらを最初のクエリセットから繰り返し切り取る以外は、これを行う方法がわかりません...
…でも、それは臭いから別の方法があるに違いない。