当前位置: 首页 > news >正文

有一次django开发实录

文章目录

  • 数据库中的数据表生成models.py中生成class
    • 1️⃣ 确保数据库配置正确
    • 2️⃣ 使用 `inspectdb` 生成模型
    • 3️⃣ 检查生成的 `models.py`
    • 4️⃣ 使用生成的模型
      • ✅ 总结
  • 在使用inspectdb从数据库转移到模型文件中,出现报错
    • 1️⃣ 常见原因
    • 2️⃣ 解决方法
      • 重新保存文件
  • 使用接口返回数据
    • 1️⃣ 安装 DRF
    • 2️⃣ 创建序列化器
    • 3️⃣ 创建只读视图(ViewSet)
    • 4️⃣ 配置 URL
    • 5️⃣ 使用接口

数据库中的数据表生成models.py中生成class

SQLserver 已经具有表的情况下,直接生成models对象。


1️⃣ 确保数据库配置正确

settings.py 中配置好 SQL Server 数据库:

DATABASES = {'default': {'ENGINE': 'mssql','NAME': 'your_db_name','USER': 'your_user','PASSWORD': 'your_password','HOST': 'localhost',  # 或 SQL Server 地址'PORT': '1433','OPTIONS': {'driver': 'ODBC Driver 18 for SQL Server',},}
}

2️⃣ 使用 inspectdb 生成模型

进入你的 Django 项目目录,然后执行:

# 自动生成 models.py 文件
python manage.py inspectdb > app_name/models.py
  • inspectdb 会扫描数据库中所有表,并根据字段类型生成对应的 Django Model。
  • 如果只想生成特定表,可以指定表名:
python manage.py inspectdb BusinessService > business/models.py

3️⃣ 检查生成的 models.py

生成的代码一般类似:

class BusinessService(models.Model):FBILLNO = models.CharField(max_length=100)FDATE = models.DateTimeField()FSUPPLIERID = models.IntegerField()FSTATUS = models.CharField(max_length=1)class Meta:managed = False  # 默认 False,表示 Django 不管理表的迁移db_table = 'BusinessService'
  • managed = False 表示 Django 不会尝试创建或修改该表,只用于 ORM 映射。
  • 如果以后想让 Django 管理表,可以改为 managed = True 并执行迁移。

4️⃣ 使用生成的模型

from business.models import BusinessService# 查询数据
services = BusinessService.objects.all()# 条件查询
service = BusinessService.objects.filter(FSTATUS='1')

✅ 总结

  1. 配置好 SQL Server 数据库。
  2. 使用 python manage.py inspectdb 自动生成 models.py
  3. 检查字段类型和 Meta 配置。
  4. 可以直接在 Django ORM 中操作已有表的数据。

如果你希望,我可以帮你生成一个 针对你提供的 BusinessService 表的完整 Django Model,并且优化字段类型和注释,让你直接在项目中用。

你希望我直接帮你生成吗?

在使用inspectdb从数据库转移到模型文件中,出现报错

错误:

SyntaxError: source code string cannot contain null bytes

意思是 你的 Python 源码文件中包含了非法的空字节 (\x00),Python 无法解析它。常见原因和解决方法如下:


1️⃣ 常见原因

  1. 文件编码/格式问题

    • 可能是文件在 Windows 上编辑时出现了 BOM 或其他不可见字符。
    • 或者文件被二进制内容覆盖(比如复制粘贴了非文本内容)。
  2. 下载或生成的文件损坏

    • 有些 inspectdbmodels.py 文件在生成时可能意外引入了空字节。
  3. 粘贴时引入不可见字符

    • 在 IDE 或网页复制粘贴代码时可能会带入空字节。

2️⃣ 解决方法

重新保存文件

  • 使用 纯文本编辑器(VSCode、Sublime Text、Notepad++)打开文件。
  • 选择 UTF-8 无 BOM 编码重新保存。
  • 确保文件里没有不可见字符。

–python 是 UTF8 – 格式的。

使用接口返回数据

需要支持:

  • 分页
  • 基于时间字段排序
  • 基于字符字段筛选
  • 返回数据表的数据
  • 没有新增、编辑功能

1️⃣ 安装 DRF

pip install djangorestframework

settings.py 中注册:

INSTALLED_APPS = [# ... 原有 app'rest_framework',
]

2️⃣ 创建序列化器

# business/serializers.py
from rest_framework import serializers
from .models import BusinessServiceclass BusinessServiceSerializer(serializers.ModelSerializer):class Meta:model = BusinessServicefields = '__all__'

3️⃣ 创建只读视图(ViewSet)

# business/views.py
from rest_framework import viewsets, filters
from .models import BusinessService
from .serializers import BusinessServiceSerializer
from rest_framework.pagination import PageNumberPagination# 自定义分页
class StandardResultsSetPagination(PageNumberPagination):page_size = 10             # 默认每页 10 条page_size_query_param = 'page_size'max_page_size = 100class BusinessServiceViewSet(viewsets.ReadOnlyModelViewSet):"""只读接口:支持分页、排序、筛选"""queryset = BusinessService.objects.all()serializer_class = BusinessServiceSerializerpagination_class = StandardResultsSetPaginationfilter_backends = [filters.OrderingFilter, filters.SearchFilter]# 支持按时间字段排序,例如 FDATEordering_fields = ['FDATE', 'FCREATEDATE', 'FMODIFYDATE']ordering = ['-FDATE']  # 默认降序# 支持基于字符字段搜索,例如 FBILLNO, FBUSINESSTYPEsearch_fields = ['FBILLNO', 'FBUSINESSTYPE', 'FSOURCEBILLNO']

4️⃣ 配置 URL

# business/urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BusinessServiceViewSetrouter = DefaultRouter()
router.register(r'business', BusinessServiceViewSet, basename='business')urlpatterns = [path('', include(router.urls)),
]

然后在主路由 urls.py 中引入:

path('api/', include('business.urls')),

5️⃣ 使用接口

  • 获取第一页数据(每页 10 条):
GET /api/business/
  • 分页参数:
GET /api/business/?page=2&page_size=20
  • 排序(例如按创建时间升序):
GET /api/business/?ordering=FCREATEDATE
  • 排序降序:
GET /api/business/?ordering=-FCREATEDATE
  • 基于字符字段搜索:
GET /api/business/?search=BS123   # 会匹配 FBILLNO、FBUSINESSTYPE、FSOURCEBILLNO

✅ 特点

  1. 只读接口ReadOnlyModelViewSet
  2. 分页 + 排序 + 字符搜索
  3. 可直接返回 JSON 数据
  4. 不包含新增、修改、删除操作

我可以帮你改造成 更接近生产环境的模板,比如支持 多个筛选字段时间区间筛选,返回的字段可自定义,避免返回敏感数据。

http://www.dtcms.com/a/398802.html

相关文章:

  • RISC-V 中的 Wait For Interrupt 指令 (wfi) 详解
  • 前端核心框架vue之(指令案例篇1/5)
  • 企业静态网站源码增城建设局网站
  • 网站兼容9公司logo和商标一样吗
  • 题解:AT_abc206_e [ABC206E] Divide Both
  • 链改2.0总架构师何超秘书长重构“可信资产lPO与数链金融RWA”
  • 网站开发技术包括网站建设专业培训
  • 无人机航拍WiFi图传模块,16公里实时高清图传性能和技术参数
  • 视频元素在富文本编辑器中的光标问题
  • 企业网站内容如何搭建推荐做木工的视频网站
  • grounding dino 源码部署 cuda12.4 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)模型
  • 一个虚拟主机可以做几个网站吗毕设做网站心得体验
  • Spring使用SseEmitter实现后端流式传输和前端Vue数据接收
  • 湖南省新闻最新消息十条深圳seo网站推广方案
  • 语音交互接待服务机器人深度推荐
  • 创建学校网站吗网站搭建工具的种类
  • Linux-ARM-裸机开发-开发环境搭建
  • 2025年校园招聘平台怎么选?
  • 如何把视频放到自己的网站ftp怎么重新上传网站
  • minio文件迁移
  • 网站反链接是什么意思wordpress 侧边收起
  • docker-desktop 分发版不支持用户数据挂载
  • 部署LVS NAT集群
  • 使用 feature_engine库 提升你的机器学习特征工程效率
  • 做网站网络公司无收入域名管理系统
  • 2,GUI Guider的安装与导入STM32裸机工程
  • 上门代管宠物系统的设计与实现
  • 鸿蒙Next应用开发:ArkTS语言下的IPC与RPC通信指南
  • CTFSHOW 中期测评(二)web502 - web516
  • JVM-执行引擎