我想说我想问一个User
一个Question
:"订购以下动物从大到小" 。这是一个简化的django:
class Question(models.Model):
text = models.CharField() #eg "Order the following animals..."
class Image(models.Model):
image = models.ImageField() #pictures of animals
fk_question = models.ForeignKey(Question)
现在,我可以为每个Image
分配一个可变数量的Question
s,并自定义问题文本。耶。
记录回复的适当方式是什么?显然,我需要User
和Question
的外键:
class Response(models.Model):
fk_user = models.ForeignKey(User)
fk_question = models.ForeignKey(Question)
但现在我被卡住了。如何优雅地记录此Image
指定的User
个对象的顺序?
编辑:我使用的是Postgres 9.5
答案 0 :(得分:1)
我一般强烈反对在列中存储逗号分隔数据。然而,这似乎是规则的例外!我可以提议CommaSeparatedIntegerField吗?
class CommaSeparatedIntegerField(max_length = None,** options)[source]¶
由逗号分隔的整数字段。就像在CharField中一样 需要max_length参数和关于数据库的注释 提到的便携性应该注意。
这实际上是一个字段,因此您输入的顺序将保留在db中。
您尚未提及您的数据库。如果你有幸使用Postgresql并使用django 1.9,你也可以使用ArrayField。
使用arrayfield会好得多,因为在字符串和列表之间来回转换不会存在。逗号分隔字段的情况是搜索很难,你不能轻易拉出第N个元素。 POstgresql数组删除后者的难度。