from django.core import validators from django.core.validators import MinLengthValidator, MaxLengthValidator, MinValueValidator, MaxValueValidator from django.db import models class Author(models.Model): full_name = models.CharField(max_length=100, validators=[MinLengthValidator(3)]) email = models.EmailField(unique=True) is_banned = models.BooleanField(default=False) birth_year = models.PositiveIntegerField(validators=[validators.MinValueValidator(1900), validators.MaxValueValidator(2005)]) website = models.URLField(null=True) class Article(models.Model): CATEGORY_CHOICES = ( ("Technology", "Technology"), ("Science", "Science"), ("Education", "Education") ) title = models.CharField(max_length=200, validators=[MinLengthValidator(5)]) content = models.TextField(validators=[MinLengthValidator(10)]) category = models.CharField(choices=CATEGORY_CHOICES, validators=[MaxLengthValidator(10)], default="Technology") authors = models.ManyToManyField("Author") published_on = models.DateTimeField(auto_now_add=True, editable=False) # auto_now_add !!! class Review(models.Model): content = models.TextField(validators=[MinLengthValidator(10)]) rating = models.FloatField(validators=[MinValueValidator(1.0), validators.MaxValueValidator(5.0)]) author = models.ForeignKey("Author", on_delete=models.CASCADE) article = models.ForeignKey('Article', on_delete=models.CASCADE) published_on = models.DateTimeField(auto_now_add=True, editable=False)