42 lines
1.1 KiB
Python
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
|
|
|
|
|
|
@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.SearchField("title", partial_match=True),
|
|
index.SearchField("module__meta_title", partial_match=True),
|
|
]
|
|
|
|
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)
|