我在Django工作,但这个问题一般适用于任何数据库。
在我的模型中,我有一个UserProfile表。另一个表UserQA包含question_text的字段和question_answer的字段。这个模型的问题是我需要一个ManyToMany关系,每个问题有两个longint的开销,而且每个用户都会复制question_text。
基本上,要求是:
2.1如果我想要一些问题以获得更复杂的答案,有没有办法扩展这个?
这似乎是一个容易解决的问题,但我无法弄明白......我想这样做的方式似乎非常低效,是否有更好的方法?
谢谢!
答案 0 :(得分:1)
您需要另一个型号,可以是Question
。最终的结果将是:
class User(models.Model):
user_name = models.CharField(...)
class Question(models.Model):
question_text = models.CharField(...)
class UserAnswer(models.Model):
question = models.ForeignKey(Question)
user = models.ForeignKey(User)
answer = models.CharField(...)
如果您想要更复杂的答案,例如特定值,值列表,您可以再创建一个模型:
class QuestionAlternative(models.Model):
question = models.ForeignKey(Question)
value = models.CharField(...)
然后重新定义UserAnswer
:
class UserAnswer(models.Model):
question = models.ForeignKey(Question)
user = models.ForeignKey(User)
answer = models.ForeignKey(QuestionAlternative)
有了这个,您将在一个地方Questions
,每个问题一个UserAnswer
,以及QuestionAlternative
他们必须存在多少次。不担心ForeignKey
字段,它们不是开销,而是构建漂亮,可重用的结构。