Files
2026-08-05 23:59:15 +08:00

66 lines
2.9 KiB
Python

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}'