models.Model字段类型的字符串列表

时间:2015-07-07 19:30:09

标签: django django-models

我将使用哪种字段类型使用models.Model在我的MySQL数据库中存储以下内容?

SURVEY_URLS = ['/surveyone/', '/surveytwo/', '/surveythree/', '/surveyfour/', '/surveyfive/', '/surveysix/', '/surveyseven/', '/surveyeight/', '/surveynine/']

我一直在关注Djangos model field field types,但似乎没什么好看的。

搜索“Django如何在models.Model中存储列表”等变体并没有向我显示任何明显的内容

2 个答案:

答案 0 :(得分:1)

只需将列表转换为JSON字符串并保存到TextField

yourobject.yourfield = json.dumps(SURVEY_URLS)
yourobject.save()

返回列表:

import ast
list_again = ast.literal_eval(yourobject.yourfield)

答案 1 :(得分:1)

您需要退后一步并重新考虑您的设计。我相信你所拥有的是一项调查'商业实体。因此,如果您的模型是一项调查,那么它的URL就是一个属性(因此它的数量等等......)。

class Survey(models.Model):
    url = models.CharField(max_length=25)
    count = models.PositiveSmallIntegerField(default=0)
    ...

但一般情况下,您实际上并不会将模型的URL放入字段中 - 该URL将来自其他内容,例如它的名称。然后,django url dispatcher会将名称传递给视图,该视图将执行查找以获得正确的调查。

任何时候你发现自己都在硬编码onetwothree,......几乎总有一种更好的方法可以做到。不要只支持9项硬编码调查 - 支持n调查(其中n可能为1,000,000)。