from django.db import models from django.utils import timezone class User(models.Model): username = models.CharField(max_length=64, unique=True) email = models.CharField(max_length=255) display_name = models.CharField(max_length=128) bio = models.TextField(blank=True) created_at = models.DateTimeField(default=timezone.now) def __str__(self) -> str: return self.username class Tag(models.Model): name = models.CharField(max_length=64, unique=True) slug = models.CharField(max_length=64, unique=True) created_at = models.DateTimeField(default=timezone.now) def __str__(self) -> str: return self.name class Post(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="posts") title = models.CharField(max_length=255) body = models.TextField() is_published = models.BooleanField(default=True) view_count = models.IntegerField(default=0) created_at = models.DateTimeField(default=timezone.now) updated_at = models.DateTimeField(auto_now=True) tags = models.ManyToManyField(Tag, related_name="posts", blank=True) def __str__(self) -> str: return self.title class Comment(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="comments") author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="comments") body = models.TextField() created_at = models.DateTimeField(default=timezone.now)