【发布时间】:2015-10-05 01:47:36
【问题描述】:
我有一个自定义用户数据的 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 和用户的 Profile?
显然,我希望得到最后一个问题的答案,但我不想排除其他问题的答案可能是“否”的可能性。
【问题讨论】:
标签: python django django-models generic-foreign-key