deklariert Ich habe eine ziemlich komplexe Projektarchitektur, die mehrere Anwendungen enthält, deren Modelle Querverweise enthält.Django Migrations ValueError: [...] wurde mit einem verzögerten Verweis auf [...]
Zum Beispiel, ich habe ein billing.Premium
Modell - die zum billing
App gehört -, dass von einem anderen Modell, dessen Namen verwiesen wird, ist payments.PaymentJob
durch einen 00.59 Feld:
('premium', models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='billing.Premium', verbose_name='premium'))
(Dieser Code kommt von einem payment
‚s-Migrationen)
Aber ich habe bis zu einem gewissen Punkt kommen, wenn ich billing.Premium
-billing.PremiumInstallment
umbenennen müssen, und das ist, wenn der lustige Teil kommt: nach meinem Co Refactoring haben de die Modellnamen zu ersetzen, ich versuche zu django-admin makemigrations
, es führt zu dem folgenden Fehler:
ValueError: The field payments.PaymentJob.premium was declared with a lazy reference to 'billing.premium', but app 'billing' doesn't provide model 'premium'.
Es scheint wie meine Migration gebrochen wurde, da ich das Modell von einer externen Anwendung umbenannt habe. Ich weiß nicht, wie ich das auf eine raffinierte Art und Weise beheben kann, ich meine, dass eine Migration ohne Fehler erzeugt wird, und das würde angewendet werden, wenn ich django-admin migrate
ausführen würde.
Irgendeine Idee?
Ich bin nicht so erfahren mit Django Modellierung schaffen sollte, sondern von der Der Fehler ist klar, dass Sie das Modell umbenannt haben, auf das von einem anderen verwiesen wird, und dann werden die geänderten nicht migriert, da der Verweis nicht mehr gefunden wird. Werfen Sie einen Blick darauf, da von Ihrem Fehler könnte richtige Schritte auf nicht einfache Architektur https://stackoverflow.com/questions/25091130/django-migration-strategy-for-renaming-a-model-and-relationshipfields gelöst werden –
Ich habe, aber alle Modelle sind in der gleichen App, wo ich zwei Modelle in zwei getrennten Apps habe, und ich kann nicht richtig durch die beschriebene Methode refaktorieren ... –