小编Mik*_*ike的帖子

在迁移中调用自定义管理器方法时出现 AttributeError

我使用的是 Django 1.10.3,在迁移步骤中,当我使用 RunPython() 调用自定义管理器方法时遇到错误。有什么想法我做错了吗?

错误消息是: AttributeError: 'Manager' 对象没有属性 'current_event'

我的模特和经理:

class EventManager(models.Manager):
    use_in_migrations = True

    def current_event(self):
        try:
            the_event = self.filter(
                            event_date__gte=date.today()
                        ).earliest(
                            field_name='event_date'
                        )
        except ObjectDoesNotExist:
            the_event = None

        return the_event

class Event(models.Model):
    event_date = models.DateField()
    objects = EventManager()
Run Code Online (Sandbox Code Playgroud)

我的迁移:

def update_ratings_event(apps, schema_editor):
    Rating = apps.get_model('league', 'Rating')
    Event = apps.get_model('league', 'Event')

    recent_event = Event.objects.current_event()

    for a_rating in Rating.objects.all():
        a_rating.event = recent_event
        a_rating.save()

class Migration(migrations.Migration):

    dependencies = [
        ('league', '0009_auto_20170401_1106'),
    ]

    operations = [
        migrations.RunPython(update_ratings_event),
    ]
Run Code Online (Sandbox Code Playgroud)

这是回溯:

  File "manage.py", …
Run Code Online (Sandbox Code Playgroud)

python migration django django-custom-manager

5
推荐指数
0
解决办法
292
查看次数

标签 统计

django ×1

django-custom-manager ×1

migration ×1

python ×1