django在models.py中删除一个函数后,执行makemigrations命令会导致错误

3

我定义了一个名为Foo的模型,其中有一个名为barFileField,还定义了一个名为baz的函数,该函数可用于在同一文件中为bar的upload_to参数而调用。 当我删除bar字段和baz函数并执行makemigrations操作时,它会引发错误"AttributeError:模块'models'没有属性'baz'"。

我该如何解决这个问题?

下面是示例代码片段

import os
import time

from django.db import models


def baz(instance, filename):
    ext = filename.split('.')[-1]
    fn = time.strftime('%Y%m%d%H%M%S')
    com = fn + '.' + ext
    return os.path.join('', com)


class Foo(models.Model):
    name = models.CharField(max_length=255)
    bar = models.FileField(upload_to=baz)  # wants to remove

2
Django 抛出此错误是因为它无法将缺失的函数与迁移历史记录进行协调。您应该找到先前命名的迁移文件,并删除其中标有 upload_to 的函数名称。然后再次尝试迁移。希望这可以帮助您! - Milo Persic
1个回答

3

这是由于 migration file 引起的。为了解决问题,你可以在 migrations 文件中将上传路径更改为包含 bar 字段初始创建的字符串。更改迁移字段的 upload_to 路径。


谢谢!当我在迁移文件makemigrations中将bar参数baz设置为None时,它可以工作!但是当部署时,我必须手动修改本地和远程服务器上的迁移文件 - 2v Cheng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接