skillbox/server/surveys/models.py

42 lines
1.1 KiB
Python

from django.contrib.auth import get_user_model
from django.db import models
from django.db.models import JSONField
from wagtail.snippets.models import register_snippet
from wagtail.search import index
from modelcluster.fields import ParentalKey
@register_snippet
class Survey(models.Model, index.Indexed):
title = models.CharField(max_length=255)
module = models.ForeignKey(
"books.Module",
related_name="surveys",
on_delete=models.PROTECT,
null=True,
blank=True,
)
data = JSONField()
search_fields = [
index.AutocompleteField("title"),
index.AutocompleteField("module__meta_title"),
]
def __str__(self):
return self.title
class Meta:
ordering = ["-pk"]
class Answer(models.Model):
owner = models.ForeignKey(
get_user_model(), on_delete=models.CASCADE, related_name="answers"
)
data = JSONField()
survey = models.ForeignKey(Survey, on_delete=models.PROTECT, related_name="answers")
def __str__(self):
return "{} - {}".format(self.owner.username, self.survey.title)