好吧,我在描述的狗屎。這是一個關係診斷。 relationship diag http://img248.imageshack.us/img248/3568/surveyrel.jpgDjango爲子類設計的模型/數據庫設計
在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
的問題是,我幾乎可以肯定,這不是做正確的方式,即使是這樣,我可以」 t解決了如何讓Django中的管理區域向用戶顯示一個選擇,詢問他們想要的部分子類型。
什麼是構建這種模型的最佳方法?
也許你可以描述更詳細一點你需要什麼你的「節」呢? – 2010-06-24 01:23:34
Idealy我希望每個調查都有不同類型的多個部分(例如多項選擇或評級),並且我希望每個不同類型都是泛型類的子類。但是,我不確定這是否是最好的數據庫模型 - 我確定它不是。 – 2010-06-24 04:22:08