假设我有三个模型,在我看来我正在显示这些模型的所有项目,我想让我的用户有权设置在第一,第二和第三视图中显示哪个模型的对象。
实现这个的最佳方法是什么?
答案 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
的关系。
然后在您的查询中,您应该根据首选项值创建三个单独的查询。