Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django迁移是否未调用重写的save()方法?_Python_Django_Database Migration - Fatal编程技术网

Python Django迁移是否未调用重写的save()方法?

Python Django迁移是否未调用重写的save()方法?,python,django,database-migration,Python,Django,Database Migration,我有一个模型SessionCategory,它类似于以下内容: from django.db import models from django.utils.text import slugify class SessionCategory(models.Model): name = models.CharField(max_length=255, unique=True) name_slug = models.CharField(max_length=255, null=T

我有一个模型
SessionCategory
,它类似于以下内容:

from django.db import models
from django.utils.text import slugify


class SessionCategory(models.Model):
    name = models.CharField(max_length=255, unique=True)
    name_slug = models.CharField(max_length=255, null=True)

    def save(self, *args, **kwargs):
        if not self.name_slug:
            self.name_slug = slugify(self.name)
        super().save(*args, **kwargs)
所以我想添加的
name\u slug
字段是
name
字段的一个slug版本

我已经运行了以下数据迁移:

from __future__ import unicode_literals

from django.db import migrations, models


def generate_name_slugs(apps, schema_editor):
    SessionType = apps.get_model('lucy_web', 'SessionType')
    for session_type in SessionType.objects.all():
        session_type.save()


class Migration(migrations.Migration):

    dependencies = [
        ('lucy_web', '0163_auto_20180627_1309'),
    ]

    operations = [
        migrations.AddField(
            model_name='sessioncategory',
            name='name_slug',
            field=models.CharField(max_length=255, null=True),
        ),
        migrations.RunPython(
            generate_name_slugs,
            reverse_code=migrations.RunPython.noop),
    ]
但是,如果我随后检查数据库,
name\u slug
字段都为空:

我还反转了迁移并重新运行它,在被重写的
save()
方法中设置跟踪(
import ipdb;ipdb.set_trace()
),但这并没有导致Python进入调试器,从而确认未调用该方法


为什么未调用被重写的
save()
方法?我必须复制
生成\u name\u slug
函数中的代码吗?

这对
会话类型
应该有帮助<代码>会话类别可以用相同的方式修改

def generate_name_slugs(apps, schema_editor):
    import lucy_web.models as m
    for session_type in m.SessionType.objects.all():
        session_type.save()

SessionType
中的
generate_name_slugs
但是在select中的
SessionCategory
。但除此之外,从
apps.get_model
中获得的类在设计上不是模型文件中的类。类似:和