fix: 修复分页排序警告,经销商设为非必填

- 为所有模型添加 Meta.ordering = ['id'],统一解决 UnorderedObjectListWarning
- 移除视图中冗余的 order_by
- Factory.dealer_name 设为可选,前端表单移除必填

Made-with: Cursor
This commit is contained in:
caoqianming 2026-03-13 09:30:31 +08:00
parent f093ac7680
commit d873f3e016
8 changed files with 34 additions and 6 deletions

View File

@ -19,6 +19,7 @@ class User(AbstractUser):
verbose_name = '用户'
verbose_name_plural = '用户'
db_table = 'auth_user'
ordering = ['id']
def __str__(self):
return f"{self.username} ({self.get_role_display()})"

View File

@ -15,6 +15,7 @@ class Dictionary(models.Model):
verbose_name_plural = '数据字典'
db_table = 'dictionary'
unique_together = ('type', 'value')
ordering = ['id']
def __str__(self):
return f"{self.type} - {self.name}"

View File

@ -0,0 +1,22 @@
# Generated by Django 4.2.7 on 2026-03-13 01:27
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('factory', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='factory',
options={'ordering': ['id'], 'verbose_name': '工厂', 'verbose_name_plural': '工厂'},
),
migrations.AlterField(
model_name='factory',
name='dealer_name',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='经销商名称'),
),
]

View File

@ -4,7 +4,7 @@ class Factory(models.Model):
"""
工厂模型
"""
dealer_name = models.CharField(max_length=255, verbose_name='经销商名称')
dealer_name = models.CharField(max_length=255, blank=True, null=True, verbose_name='经销商名称')
product_category = models.CharField(max_length=255, blank=True, null=True, verbose_name='产品分类')
factory_name = models.CharField(max_length=255, verbose_name='生产工厂全称')
factory_short_name = models.CharField(max_length=100, verbose_name='工厂简称')
@ -20,6 +20,7 @@ class Factory(models.Model):
verbose_name = '工厂'
verbose_name_plural = '工厂'
db_table = 'factory'
ordering = ['id']
def __str__(self):
return self.factory_name

View File

@ -28,4 +28,4 @@ class FactoryListSerializer(serializers.ModelSerializer):
"""
class Meta:
model = Factory
fields = ['id', 'factory_name', 'factory_short_name', 'province', 'city']
fields = ['id', 'factory_name', 'factory_short_name', 'province', 'city', 'dealer_name']

View File

@ -73,6 +73,7 @@ class Material(models.Model):
verbose_name = '材料'
verbose_name_plural = '材料'
db_table = 'material'
ordering = ['id']
def __str__(self):
return self.name
@ -91,6 +92,7 @@ class MaterialCategory(models.Model):
verbose_name = '材料分类'
verbose_name_plural = '材料分类'
db_table = 'material_category'
ordering = ['id']
def __str__(self):
return self.name
@ -110,6 +112,7 @@ class MaterialSubcategory(models.Model):
verbose_name = '材料子分类'
verbose_name_plural = '材料子分类'
db_table = 'material_subcategory'
ordering = ['id']
def __str__(self):
return self.name

View File

@ -202,7 +202,7 @@ class MaterialCategoryViewSet(ModelViewSet):
"""
材料分类视图集
"""
queryset = MaterialCategory.objects.all().order_by('id')
queryset = MaterialCategory.objects.all()
serializer_class = MaterialCategorySerializer
permission_classes = [IsAuthenticated]
@ -226,7 +226,7 @@ class MaterialSubcategoryViewSet(ModelViewSet):
"""
材料子分类视图集
"""
queryset = MaterialSubcategory.objects.select_related('category').all().order_by('id')
queryset = MaterialSubcategory.objects.select_related('category').all()
serializer_class = MaterialSubcategorySerializer
permission_classes = [IsAuthenticated]

View File

@ -1,4 +1,4 @@
<template>
<template>
<div class="page">
<div class="page-title">工厂管理</div>
<div class="toolbar">
@ -38,7 +38,7 @@
<el-dialog v-model="dialogVisible" :title="dialogTitle" width="640px" class="dialog-scroll">
<el-form :model="form" label-width="100px">
<el-form-item label="经销商" required>
<el-form-item label="经销商">
<el-input v-model="form.dealer_name" />
</el-form-item>
<el-form-item label="产品分类">