from django.db import models from django.forms.models import model_to_dict class Suggester(models.Model): name = models.CharField(max_length=254) email = models.EmailField(max_length=254, unique=True) def __str__(self): return self.email class Author(models.Model): name = models.CharField(max_length=254) slug = models.CharField(max_length=24, unique=True) def __str__(self): return self.name class Quote(models.Model): text = models.TextField() author = models.ForeignKey( Author, on_delete=models.CASCADE) suggester = models.ForeignKey( Suggester, on_delete=models.SET_NULL, null=True, blank=True) def __str__(self): return self.text def as_dict(self, suggester=False): result = model_to_dict(self, fields=["text"]) result["author"] = model_to_dict(self.author, exclude=["id"]) if suggester: result["suggester"] = model_to_dict( self.suggester, exclude=["id"]) if self.suggester else None return result class Suggestion(models.Model): text = models.TextField() context = models.TextField(null=True, blank=True) author_name = models.CharField(max_length=254) suggester = models.ForeignKey( Suggester, on_delete=models.CASCADE) def __str__(self): return self.text