Django:存储用户偏好

Kas*_* B. 6 python django django-forms

我对 Django 还是很陌生,并试图找出解决以下问题的最佳方法。

我想将用户个人偏好(用户喜欢或不喜欢的东西)存储为简单的布尔值 - true 或 false。问题是偏好不是固定的,可以通过管理界面添加新的偏好。

这就是我的想法。

喜好:

class Preferences(models.Model):
    title = models.CharField(max_length=100)
    ...
Run Code Online (Sandbox Code Playgroud)

价值观:

class PreferencesValues(models.Model):
    user = models.ForeignKey(User)
    preference = models.ForeignKey(Preferences)
    value = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

这是要走的路还是有更好的方法?此外,制作显示所有可用首选项和复选框的表单的最佳方法是什么,但将初始值设置为检查用户已经标记的那些首选项?

oba*_*han 0

如果您所有的偏好值都是布尔值,那么是的,这种方式是可以接受的。如果你想PreferencesValues使用 Django Forms 来处理,你应该看看Django Formsets

但如果您想做一些支持 ajax 的东西,您还应该看看这篇 Django Snippets 文章