Python 在django中存储多个select值

Python 在django中存储多个select值,python,django,Python,Django,我是Django的新生。我在搜索一篇描述django在数据库中存储multiselect列表框值的方式的文章,但没有找到 在我的例子中,我有一个带有选项的类别列表框(C1、C2、C3)。类别名称可以是一个长名称。我想为单个用户分配多个类别。它也可以是分配给用户的单个类别 我的模型看起来是这样的(cat_name fiels取决于它在db中的存储方式) 我的问题是django将如何在db中存储这些值 class Category(models.Model): user = models.F

我是Django的新生。我在搜索一篇描述django在数据库中存储multiselect列表框值的方式的文章,但没有找到

在我的例子中,我有一个带有选项的类别列表框(
C1、C2、C3
)。类别名称可以是一个长名称。我想为单个用户分配多个类别。它也可以是分配给用户的单个类别

我的模型看起来是这样的(cat_name fiels取决于它在db中的存储方式)

我的问题是django将如何在db中存储这些值

class Category(models.Model):
    user = models.ForeignKey(User)
    cat_name = models.CharField(max_length=100)
    #or cat_name = models.TextField()
id    user_id    cat_name
1     1          C1&C2&C3
2     2          C1&C2
3     3          C3

如果是第一种情况,那么我将使用
TextField
else
CharField
&第一种情况中使用的只是一个示例


如有任何建议/链接,我们将不胜感激。提前感谢。

Django将以字符串形式存储您的数据。

假设您在模型表单中有一个名为
cat\u name
的多回音字段,并且该字段的定义模式为
CharField

Django将表单值作为列表保存。 保存该字段时,在调用期间,该字段的python值将转换为相应的db值

这个问题:

  • 你必须教Django如何将
    转换回python
  • 您正在跨行复制数据

Django将以字符串形式存储您的数据。

假设您在模型表单中有一个名为
cat\u name
的多回音字段,并且该字段的定义模式为
CharField

Django将表单值作为列表保存。 保存该字段时,在调用期间,该字段的python值将转换为相应的db值

这个问题:

  • 你必须教Django如何将
    转换回python
  • 您正在跨行复制数据

多选列表框位于网站前端,Django如何将其存储在数据库中取决于您为其选择的模型字段。如果将
ManyToManyField
与单独的模型一起使用,则可以得到类似于第二个示例的内容。@bouteillebleu非常感谢。我将有多个选择列表框在管理员和管理员将分配类别给用户。请举例说明如何将
ManyToManyField
separate model
一起使用。models.py示例是否有帮助?一般来说,还应该有更多关于
ManyToManyField
的帮助。@bouteillebleu很棒。这会有很大帮助。非常感谢您的帮助。多选列表框位于您网站的前端,Django如何将其存储在数据库中取决于您为其选择的模型字段。如果将
ManyToManyField
与单独的模型一起使用,则可以得到类似于第二个示例的内容。@bouteillebleu非常感谢。我将有多个选择列表框在管理员和管理员将分配类别给用户。请举例说明如何将
ManyToManyField
separate model
一起使用。models.py示例是否有帮助?一般来说,还应该有更多关于
ManyToManyField
的帮助。@bouteillebleu很棒。这会有很大帮助。非常感谢你的帮助。
id    user_id    cat_name
1     1          C1
2     1          C2
3     1          C3
4     2          C1
5     2          C2
6     3          C3
>>> selection = ['cat 1', 'cat 2', 'cat 3']
>>> str(selection)
"['cat 1', 'cat 2', 'cat 3']"