You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

36 lines
1.6 KiB

from django.db import models
from django.contrib.auth.models import User
from django.conf import settings # 使用 Django 的配置抽象层
# 帖子模型
class Post(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content = models.TextField(verbose_name="内容")
image = models.ImageField(upload_to='post_images/', blank=True, null=True)
video = models.FileField(upload_to='post_videos/', blank=True, null=True)
like_count = models.PositiveIntegerField(default=0) # 👍 新增点赞字段
comment_count = models.PositiveIntegerField(default=0) # 👍 新增评论字段
favorite_count = models.PositiveIntegerField(default=0) # 👍 新增点赞字段
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.user.username} 的帖子"
# 互动模型(点赞、评论、收藏)
class Like(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class Comment(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
class Favorite(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)