1

カスタム ユーザー データの Profile モデルがあります。

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=False)
    # more stuff...

モデルがユーザーに通知と電子メールを送信できるようにする通知アプリもあります。

ユーザーにはさまざまな通知をオンまたはオフにするオプションが必要ですが、次のようにブール値フィールドの膨大なリストをプロファイルに追加したくありません。

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, null=False)
    send_model1_notice1 = models.BooleanField()
    send_model1_email1 = models.BooleanField()
    send_model1_notice2 = models.BooleanField()
    send_model1_email2 = models.BooleanField()
    send_model2_notice1 = models.BooleanField()
    send_model2_email1 = models.BooleanField()
    send_model3_notice1 = models.BooleanField()
    send_model3_email1 = models.BooleanField()
    # etc...

ここで、modelx は通知の発信元であるモデルまたはその他のアプリであり、noticex/emailx は通知の特定の原因です。

これを行うためのより持続可能な方法は、外部モデルが独自の通知設定を定義するために使用できる ProfileOptions モデルを作成することだと考えていました。

このようにして、新しいアプリ/モデルを追加するときに、その通知ソースを何らかの方法で ProfileOptions モデルにリンクし、それらをオンまたはオフにするこれらのオプションを魔法のようにユーザーのプロファイルに表示することができます。

これは理にかなっていますか?もしそうなら、それは可能ですか?もしそうなら、それは良い考えですか?その場合、モデル、ProfileOptions、およびユーザーのプロファイルを接続するには、どのような構造を使用する必要がありますか?

明らかに、最後の質問への回答を望んでいますが、他の質問への回答が「いいえ」である可能性を排除したくありません。

4

1 に答える 1