Sie können innerhalb der Funktionen importieren, und das wird Sie Code funktioniert:
@shared_task
def hello():
from core.models import Foo
Foo.objects.create()
jedoch 99% der Zeit ich in dieses Problem lief erkannte ich, dass es ein logischer Fehler in meinem Code war nachdem ich genug nachgedacht habe. Disclaimer: Ich habe fast keine Erfahrung mit Django.
Wenn A
benötigt B
und B
braucht A
, gibt es in der Regel etwas kaputt. Die meisten der Zeit, ist das Problem einer der folgenden:
A
und B
logisch gehören toghether und sollte
A
und B
sind logisch discting genug, um in dem selben Modul zusammengefügt werden, aber es gibt gemeinsame Funktionalität, die tut nicht auf etwas anderes von A
oder B
abhängen, so dass es möglich ist, es in C
zu abstrahieren und es von den anderen beiden zu importieren.
A
hat eine falsche Abhängigkeit in B
, weil A
B
überhaupt nicht benötigt.
In Ihrem Fall würde ich sagen, dass es die dritte Option ist. tasks
muss eindeutig auf models
verlassen werden. Aber braucht models
tasks
überhaupt? tun Sie einfach von models
, was Sie brauchen. Zum Beispiel:
class Foo(models.Model):
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
Foo.objects.create()
super(Foo, self).save(force_insert, force_update, using, update_fields)
Sie kann immer auf Funktionsebene importiert werden. –
@AshwiniChaudhary: Import auf Funktionsebene bedeutet? –
Es könnte bedeuten, dass es möglich ist, die Importanweisung in die Funktionsdefinition zu verschieben. – zezollo