我是Django的新手。我正在搜索一篇文章或SO线程,描述django在数据库中存储多选列表框值但无法找到的方式。
在我的情况下,我有类别列表框,其中包含选项(C1,C2,C3
)。类别名称可以很长。我想为单个用户分配多个类别。它也可以是分配给用户的单一类别。
我的模型看起来像这样(cat_name fiels取决于它在数据库中的存储方式)
class Category(models.Model):
user = models.ForeignKey(User)
cat_name = models.CharField(max_length=100)
#or cat_name = models.TextField()
我的问题是django如何将值存储在db
中id user_id cat_name
1 1 C1&C2&C3
2 2 C1&C2
3 3 C3
或者
id user_id cat_name
1 1 C1
2 1 C2
3 1 C3
4 2 C1
5 2 C2
6 3 C3
如果是第一种情况,那么我将使用TextField
其他CharField
。 &安培;在第一种情况下使用的只是一个例子。
任何建议/链接都非常感谢。提前谢谢。
答案 0 :(得分:0)
Django会将您的数据存储为字符串。
假设您在ModelForm中有一个名为cat_name
的MultipleChoiceField,并且该字段的已定义架构为CharField
。
Django在保存之前将表单值作为列表。
保存时,在调用get_prep_value
期间,字段的python值将转换为其对应的db值。
>>> selection = ['cat 1', 'cat 2', 'cat 3']
>>> str(selection)
"['cat 1', 'cat 2', 'cat 3']"
麻烦:
to_python
。