【发布时间】:2011-03-07 10:20:01
【问题描述】:
在 Django 中,我制作了如下模型:
from django.db import models
from datetime import datetime
class Survey(models.Model):
name = models.CharField(max_length=100)
pub_date = models.DateTimeField('date published',default=datetime.now)
def __unicode__(self):
return self.name
# This model should be abstracted by a more specific model
class Section(models.Model):
survey = models.ForeignKey(Survey)
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
# Models for supporting the 'ratings' mode
class RatingSection(Section):
pass
class RatingQuestion(models.Model):
section = models.ForeignKey(RatingSection)
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class RatingAnswer(models.Model):
section = models.ForeignKey(RatingSection)
name = models.CharField(max_length=60)
def __unicode__(self):
return self.name
class RatingVotes(models.Model):
question = models.ForeignKey(RatingQuestion)
answer = models.ForeignKey(RatingAnswer)
votes = models.PositiveIntegerField(default=0)
def __unicode__(self):
return self.votes + self.answer.name + ' votes for ' + self.question.name
# Models for supporting the 'multichoice' mode
class MultiChoiceSection(Section):
can_select_multiple = models.BooleanField()
class MultiChoiceQuestion(models.Model):
section = models.ForeignKey(MultiChoiceSection)
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class MultiChoiceAnswer(models.Model):
section = models.ForeignKey(MultiChoiceSection)
name = models.CharField(max_length=60)
votes = models.PositiveIntegerField(default=0)
def __unicode__(self):
return self.name
问题是我几乎可以肯定这不是正确的方法,即使是这样,我也无法弄清楚如何允许 Django 中的管理区域向用户显示选择,询问什么他们想要的部分的子类型。
构建此类模型的最佳方法是什么?
【问题讨论】:
-
也许你可以更详细地描述一下你需要你的“部分”做什么?
-
理想情况下,我希望每个调查都有多个不同类型的部分(例如多项选择或评分),并且我希望每个不同的类型都是通用类 Section 的子类。但是,我不确定这是否是最好的数据库模型——我很确定它不是。
标签: python django database-design django-models django-admin