创建记账 app
python manage.py startapp record
首先需要确认数据库表结构,分两张表:分类表、账单表
分类表包括:分类名称
账单表包括:消费金额、消费时间、消费用户(关联到用户表)、消费分类(关联到分类表)、消费的具体描述。
根据以上信息创建 Model
:
from django.db import models
from django.contrib.auth.models import User
class Catalog(models.Model):
catalog = models.CharField(max_length=200, help_text='输入分类名称')
def __str__(self):
return self.catalog
class Consume(models.Model):
price = models.DecimalField(max_digits=6, decimal_places=2, help_text='输入消费金额')
consume_time = models.DateTimeField(help_text='消费时间')
# 外键关联到用户
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
# 消费类型
consume_type = models.ForeignKey('Catalog', on_delete=models.SET_NULL, null=True)
desc = models.CharField(max_length=2000, help_text='消费具体描述')
from rest_framework import serializers
class CatalogSerializer(serializers.ModelSerializer):
class Meta:
model = Catalog
fields = ('id', 'catalog')
class ConsumeSerializer(serializers.ModelSerializer):
class Meta:
model = Consume
fields = '__all__'
视图类:
# views.py
from rest_framework import viewsets
from .models import Catalog, CatalogSerializer, Consume, ConsumeSerializer
class CatalogViewSet(viewsets.ModelViewSet):
queryset = Catalog.objects.all()
serializer_class = CatalogSerializer
注册接口:
from django.urls import include, path
from .views import CatalogViewSet
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'catalog', CatalogViewSet) # 注册路由到ManViewSet视图
urlpatterns = [
path('', include(router.urls)), # 使用router路由
]
在管理后台插入几条数据,访问接口:
成功!
记账功能的开发
class ConsumeViewSet(viewsets.ModelViewSet):
queryset = Consume.objects.all()
serializer_class = ConsumeSerializer
# 当前用户即为这条记录所属的用户
def perform_create(self, serializer):
serializer.save(user=self.request.user)