1、数据表的常用字段和常用配置
1.1 常用字段
CharField | 用于存储字符串类型 |
IntegerField | 用于存储整数类型 |
FloatField | 用于存储浮点数类型 |
BooleanField | 用于存储布尔类型 |
DateField | 用于存储日期类型 |
DateTimeField | 用于存储日期和时间类型 |
ImageField | 用于存储图片类型 |
FileField | 用于存储文件类型 |
ForeignKey | 用于表示数据库表之间的外键关联关系 |
OneToOneField | 用于表示一对一的关联关系 |
ManyToManyField | 用于表示多对多的关联关系 |
1.2 常用配置
max_length | 字段的最大长度限制,可以应用于多种不同的字段类型 |
verbose_name | 字段的友好名称,便于在管理员后台可视化操作时使用 |
default | 指定字段的默认值 |
null | 指定字段是否可以为空,`null=True` 设置允许该字段为 NULL 值 |
blank | 指定在表单中输入时是否可以为空白 |
choices | 用于指定字段的可选值枚举列表 |
2、引入 admin 后台和管理员
2.1 创建 admin 的超级管理员
python manage.py createsuperuser
2.2 在 admin 文件中引入数据表
from django.contrib import admin
from apps.purchase.models import GoodsCategory, Goods
2.3 注册数据表到 admin
admin.site.register(Goods)
admin.site.register(GoodsCategory)
3、外键的使用
3.1 给产品表创建一个外键
category = ForeignKey(GoodsCategory, on_delete=SET_NULL,related_name='goods_set',null=True,verbose_name='产品分类')
其中on_delete 设置当外键对应的数据被删除时的反应.
3.2 根据分类获取产品
以下代码来自https://github.com/Joe-2002/sweettalk-django4.2,稍有修改。
# 函数式编程
@api_view(['POST', 'GET'])
def InsertGoodsCategory(request):
category_name = request.data.get('分类名字')
category, created = GoodsCategory.objects.get_or_create(name=category_name)
# 判断是否已存在分类
if not created:
return Response({"status": "已存在", "goods_category": category_name}, status=200)
else:
return Response({"message": f"Successfully inserted category '{category_name}'."})
@api_view(['POST','GET'])
def FilterGoodsCategory(request):
data = request.data.get('分类名字')
goods = GoodsCategory.objects.filter(name=data)
if goods.exists():
return Response({"status": "已存在", "goods_category": data}, status=200)
else:
return Response({"status": "不存在" ,"goods_category": data}, status=404)
3.3 放入路由
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('filtergoodscategory/', FilterGoodsCategory),
path('insertgoodscategory/', InsertGoodsCategory),
]