Django - 只有一个字段的模型可以吗?

时间:2016-12-07 12:51:37

标签: sql django django-models

在我们学习如何概述研究论文的第五年级时,我们的老师告诉我们你永远不应该只有一个要点。我觉得我违反了这条规则,可能会有更好的方法。

我有型号Movie,其中包含titleyear等字段。我还要包括genre。但是,电影可以分为多种类型。所以我觉得我需要有多对多的关系。但我真的不想让Genre成为自己的模型类,因为只有一个字段Genre.genre。这对我来说似乎不对。我知道我可以将类型设为CharField,并将某些类型的分隔符定义为单独的类型,即action|adventure|comedy。但这是最好的方法吗?

我打算对这个数据库运行原始SQL查询,所以简单性现在很有价值。

2 个答案:

答案 0 :(得分:2)

对于具有单一属性的模型,没有这样的一般质量规则。由于电影可以有多种类型和类型,显然可以属于多部电影,ManyToMany关系可能是你最好的拍摄。

另一种方法是在模型中添加genres TextField,然后将所有类型保存为以逗号分隔的列表。在这种方法的许多明显问题中,你无法按类型有效地查询电影,并且不能保证在两个不同的电影实例中不会以不同的方式编写相同的类型。

如果您使用的是PostgreSQL,另一个选项是将genres定义为CharField的{​​{1}}。为每个可能的流派定义一个常量,并将其传递给CharField的{​​{3}}。

COMEDY = 'COMEDY'
ADVENTURE = 'ADVENTURE'
ACTION = 'ACTION'
# ...

GENRE_CHOICES = (
    (COMEDY, 'Comedy'),
    (ADVENTURE, 'Adventure'),
    (ACTION, 'Action'),
    # ...
)

答案 1 :(得分:0)

AFAIK没有这样的规则。 genre是一个单独的模型是有道理的。因此,查询所有类型和访问电影属于该类型将更直接。

如果您仍然感到奇怪,请在created_time模型中添加created_userGenre字段。稍后你会发现它很有用。