序列化多表操作、请求与响应、视图组件(子类与拓展类)、继承GenericAPIView类重写接口

这篇博客介绍了Python微信订餐小程序的开发,包括序列化多表操作、请求与响应的处理,以及如何在视图组件中重写接口。详细内容涵盖models.py、serializer.py、views.py中的实现和urls.py的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python微信订餐小程序课程视频

https://edu.youkuaiyun.com/course/detail/36074

Python实战量化交易理财系统

https://edu.youkuaiyun.com/course/detail/35475

今日内容概要

  • 序列化多表操作
  • 请求与相应
  • 视图组件

内容详细

1、序列化多表操作

模型类 models.py中

# 新建django项目
# 创建表 模型类models.py中:
from django.db import models

# 4张表
class Book(models.Model):
    name = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE)  # to='Publish' 自动关联publish表主键 // on\_delete=models.CASCADE 级联删除
    authors = models.ManyToManyField(to='Author')

    def \_\_str\_\_(self):
        return self.name

 @property
    def publish\_detail(self):  # 定制字段
        return {'name': self.publish.name, 'addr': self.publish.city}

 @property
    def author\_list(self):  # 定制字段
        l = []
        # print(self.authors.all())
        for author in self.authors.all():
            # print(author.author\_detail)
            l.append({'name': author.name, 'age': author.age, 'addr': author.author_detail.addr})
        return l
    
    
class Author(models.Model):
    name = models.CharField(max_length=32)
    age = models.IntegerField()
    author_detail = models.OneToOneField(to='AuthorDatail', on_delete=models.CASCADE)
    # OneToOneField 就是 ForeignKey + unique=True


class AuthorDatail(models.Model):
    telephone = models.BigIntegerField()
    addr = models.CharField(max_length=64)


class Publish(models.Model):
    name = models.CharField(max_length=32)
    city = models.CharField(max_length=32)
    email = models.EmailField()
    
    
"""
在每个表中写入数据一一对应
第五个自动创建的关联表 也写入数据
"""

image

创建序列化类 serializer.py

from .models import *
from rest_framework import serializers


class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        # fields = '\_\_all\_\_'
        fields = ['id', 'name', 'price', 'authors', 'publish', 'publish\_detail', 'author\_list']

        # 由于前端的publis
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值