sql >> Databáze >  >> RDS >> PostgreSQL

Model kvízové ​​aplikace django pro otázky s výběrem z více možností

Pro správně normalizované schéma relační databáze potřebujete odlišnou Choice model s cizím klíčem na Question :

class Question(models.Model):
    question = models.CharField(...)

class Choice(models.Model):
    question = models.ForeignKey("Question", related_name="choices")
    choice = modelsCharField("Choice", max_length=50)
    position = models.IntegerField("position")

    class Meta:
        unique_together = [
            # no duplicated choice per question
            ("question", "choice"), 
            # no duplicated position per question 
            ("question", "position") 
        ]
        ordering = ("position",)

A pak se můžete dostat na Question možnosti pomocí myquestion.choices.all() (a získejte otázku z Choice pomocí mychoice.question ).

Všimněte si, že to nestanoví žádné omezení počtu možností pro otázku, dokonce ani nenařizuje, aby otázka měla alespoň jednu související volbu.

Pokud nemáte velmi pádný důvod k opakování, správně normalizované schéma je to, co chcete při používání relační databáze (rdbms jsou mnohem víc než pouhé bitbuckety, nabízejí toho hodně užitečných funkcí – pokud máte správné schéma).



  1. Konverze REGEXP_LIKE v SQL Server T-SQL

  2. Propojení aplikace Android studio s mysql

  3. Chyba PostGIS:Nelze vybrat nejlepší kandidátskou funkci

  4. MySQL vybrat před po řádku