from django.conf import settings from django.db import models class ApiCategory(models.Model): name = models.CharField(max_length=50, unique=True, verbose_name='分类名称') icon = models.CharField(max_length=100, default='AppstoreOutlined', verbose_name='图标名称') sort_order = models.IntegerField(default=0, verbose_name='排序') created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') class Meta: ordering = ['sort_order', '-created_at'] verbose_name = 'API分类' verbose_name_plural = 'API分类' def __str__(self): return self.name class ApiItem(models.Model): HTTP_METHOD_CHOICES = [ ('GET', 'GET'), ('POST', 'POST'), ('PUT', 'PUT'), ('DELETE', 'DELETE'), ] name = models.CharField(max_length=100, verbose_name='API名称') description = models.TextField(default='', blank=True, verbose_name='API描述') icon = models.CharField(max_length=100, default='ApiOutlined', verbose_name='图标名称') url_path = models.CharField(max_length=200, verbose_name='API路径') method = models.CharField(max_length=10, choices=HTTP_METHOD_CHOICES, default='GET', verbose_name='请求方法') category = models.ForeignKey(ApiCategory, on_delete=models.SET_NULL, null=True, blank=True, related_name='items', verbose_name='所属分类') is_enabled = models.BooleanField(default=True, verbose_name='是否启用') is_new = models.BooleanField(default=False, verbose_name='是否为新API') is_coming_soon = models.BooleanField(default=False, verbose_name='是否即将到来') views_count = models.IntegerField(default=0, verbose_name='浏览次数') color = models.CharField(max_length=20, default='#667eea', blank=True, verbose_name='主题颜色') image_url = models.URLField(max_length=500, blank=True, default='', verbose_name='图片URL') sort_order = models.IntegerField(default=0, verbose_name='排序') created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') updated_at = models.DateTimeField(auto_now=True, verbose_name='更新时间') class Meta: ordering = ['sort_order', '-created_at'] verbose_name = 'API接口' verbose_name_plural = 'API接口' def __str__(self): return self.name class ApiFavorite(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='api_favorites', verbose_name='用户') api_item = models.ForeignKey(ApiItem, on_delete=models.CASCADE, related_name='favorites', verbose_name='API接口') created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') class Meta: verbose_name = 'API收藏' verbose_name_plural = 'API收藏' unique_together = ['user', 'api_item'] ordering = ['-created_at'] def __str__(self): return f'{self.user} favorites {self.api_item}'