如何在数据库中保留django模型以供用户定制查看?

时间:2015-09-28 06:36:29

标签: python django django-models

假设我有三个模型,在我看来我正在显示这些模型的所有项目,我想让我的用户有权设置在第一,第二和第三视图中显示哪个模型的对象。

实现这个的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

Django的最佳实践是将用户配置文件对象定义如下:

class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name="profile")
    # add whatever other configurations & preferences you allow the user to set here
    feature_x_priority = models.IntegerField(default=0)
    feature_y_priority = models.IntegerField(default=1)
    feature_z_priority = models.IntegerField(default=2)

然后,从代码中的任何位置,您都可以使用user.profile.feature_x_priority

不要忘记为每个用户(新用户和现有用户)创建个人资料,或者在使用之前检查user.profile是否存在。

答案 1 :(得分:0)

我的用户"不清楚你的意思

这只是管理员用户为网站设置全局配置。

或者您是说网站的evey用户有他/她自己的偏好?

如果后一种情况,则创建一个名为Preferences的新模型,该模型与用户模型有one to one的关系。

然后在您的查询中,您应该根据首选项值创建三个单独的查询。