Ok, je suis merde à décrire. Voici une relation diag. relationship diag http://img248.imageshack.us/img248/3568/surveyrel.jpgDjango Modèle/Design de base de données pour les sous-classes
Dans Django j'ai fait mes modèles:
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
Le problème est que je suis presque certain que n'est pas la bonne façon de le faire, et même si elle est, je peux » t expliquer comment permettre à la zone d'administration de Django d'afficher une sélection à l'utilisateur demandant quel sous-type de section il souhaite.
Quelle serait la meilleure façon de structurer des modèles de ce genre?
Peut-être que vous pouvez décrire un peu plus en détail ce que vous avez besoin de vos « sections » pour? –
Idéalement, j'aimerais que chaque enquête comporte plusieurs sections de différents types (par exemple, choix multiple ou notation), et je voulais que chaque type différent soit une sous-classe de la classe générique, Section. Cependant, je ne suis pas sûr si c'est le meilleur modèle de base de données - je suis assez sûr que ce n'est pas le cas. –