Aufrufen einer statischen Methode für eine Django-Modellklasse während einer Südmigration

Ich schreibe eine Datenmigration nach Süden, um denormalisierte Daten zu reparieren, die ich in früherem Code vermasselt habe. Um den richtigen Wert für das falsche Feld zu ermitteln, müssen Sie eine statische Methode für die Django-Modellklasse aufrufen. Der Code sieht so aus:

class Account(models.Model):
    name = models.CharField()

    @staticmethod
    def lookup_by_name(name):
        # There's actually more to it than this
        return Account.objects.get(name=name)

class Record(models.Model):
    account_name = models.CharField()
    acct = models.ForeignKey('Account')

...

class Migration(DataMigration):

    def forwards(self, orm):
        # Fixing Records with the wrong FK to Account
        for record in orm.Record.objects.all():
            record.acct = orm.Account.lookup_by_name(record.account_name)
            record.save()

Aber dies schlägt fehl mit

AttributeError: type object 'Account' has no attribute 'lookup_by_name'

Ich vermute, Süden unterstützt einfach nicht@staticmethods auf Modellklassen?

Der Versuch, ein Konto direkt zu importieren, schlägt fehl, es sei denn, ich importiere Record direkt und ignoriere das ORM-Objekt vollständig. Ist das eine sichere Option, da es sich um eine Datenmigration handelt und sich das Schema nicht ändert? Oder sollte ich diesen Fix einfach von Hand ausführen, anstatt im Rahmen einer Südmigration.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage