我的数据库中有下一个模型。 Question
代表一个问题和一个与之关联的投票,TextPollQuestion
在问题前有文字,Answer
包含答案文字和问题链接,UserAnswers
包含用户&# 39;答案:
class Question(models.Model):
question_text = models.CharField(max_length=200)
poll = models.ForeignKey(Poll, null=True, blank=True)
user_answers = models.ManyToManyField(UserProfile, through='UserAnswers')
class TextPollQuestion(Question):
text = models.CharField(max_length=450)
class Answer(models.Model):
answer_text = models.CharField(max_length=100)
question = models.ForeignKey(Question, null=True, blank=True)
class UserAnswers(models.Model):
question = models.ForeignKey(Question)
user = models.ForeignKey(UserProfile)
answer = models.CharField(max_length=40)
使用此代码,我必须创建另一个Answer
,UserAnswers
的子类型以及连接到Question
模型的其他一些模型,以便将它们与TextPollQuestion
模型一起使用,但很明显违反DRY原则。我应该使用什么来将所有模型链接到Question
和TextPollQuestion
的某些超类型并避免重复模型?
答案 0 :(得分:1)
关于你问题的标题......
Django有3个主要"模式"用于编写模型时的子类化。
请记住您定义的每个模型,除非它"抽象","非托管"或" proxy",将导致Django ORM在DB中为其创建表。