You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中Plateforme模型字段默认值修改未生效求助

解决Django模型字段默认值修改不生效的问题

1. 先确认模型代码修改是否准确

检查Plateforme模型里name字段的定义,确保默认值确实改成了'Plateforme_Test_1',比如:

class Plateforme(models.Model):
    name = models.CharField(max_length=255, default='Plateforme_Test_1')
    # 其他字段定义...

注意核对字符串拼写、引号格式,确保没有笔误。

2. 重新生成并执行迁移

即便删除过旧迁移文件,也要严格走一遍流程:

  • 运行 python manage.py makemigrations,查看输出是否包含Plateforme模型name字段默认值修改的迁移记录
  • 再运行 python manage.py migrate,确认迁移执行成功,无报错信息

3. 排查自定义save()方法或信号是否覆盖默认值

如果模型有自定义的save()方法,或者项目里存在pre_save信号,可能会在保存对象时强制设置旧默认值:

  • 检查模型的save()方法:
def save(self, *args, **kwargs):
    # 留意是否有这类硬编码的逻辑
    if not self.name:
        self.name = 'default_plateforme'
    super().save(*args, **kwargs)
  • 检查项目中的信号代码:
@receiver(pre_save, sender=Plateforme)
def set_plateforme_name(sender, instance, **kwargs):
    if not instance.name:
        instance.name = 'default_plateforme'

如果有这类代码,同步把默认值改成'Plateforme_Test_1'即可。

4. 检查API层是否硬编码了默认值

如果是通过API创建对象,要排查序列化器或视图是否手动设置了旧默认值:

  • 序列化器示例:
class PlateformeSerializer(serializers.ModelSerializer):
    class Meta:
        model = Plateforme
        fields = '__all__'

    def create(self, validated_data):
        # 检查是否存在这类强制设置的代码
        validated_data.setdefault('name', 'default_plateforme')
        return super().create(validated_data)
  • 视图示例:
class PlateformeCreateView(generics.CreateAPIView):
    serializer_class = PlateformeSerializer

    def perform_create(self, serializer):
        serializer.save(name='default_plateforme')

这类硬编码逻辑会直接忽略模型的默认值设置,需要改成新的默认值。

5. 验证对象创建逻辑

直接在Django Shell中创建对象,测试默认值是否生效:

python manage.py shell
>>> from your_app.models import Plateforme
>>> p = Plateforme.objects.create()
>>> print(p.name)

如果Shell中输出Plateforme_Test_1,说明模型和迁移没问题,问题出在API层;如果Shell中还是旧值,再回头检查模型代码和迁移流程。


内容的提问来源于stack exchange,提问作者JoJoWasACode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 07:02:10