Modele wzajemnie od siebie zależne

0

Dzień dobry.

Mam dwa modele, dajmy na to:

class Model1(models.Model):
    model2 = models.ForeignKey(Model2, on_delete=models.CASCADE, null=True)
    ...

class Model2(models.Model):
    model1 = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True)
    ...

Dostaję błąd NameError: name 'Model2' is not defined, jako, użycie Model2 jest przed jego definicją.

W C++ jest na to myk, że można zadeklarować informacyjnie klasę, a potem, wtórnie ją zdefiniować, jeżeli zachodzi sytuacja jak powyżej. Czy z Pythonie też tak da się zrobić?

Dzięki
M.

==============
EDIT

Obszedłem to, pisząc:

class Model1(models.Model):
    model2 = models.ForeignKey('Model2', on_delete=models.CASCADE, null=True, related_name='m1_model2')
    ...

class Model2(models.Model):
    model1 = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, related_name='m2_model1')
    ...

Jednak czy to dobre rozwiązanie tego problemu?

0

Model1->Model2 i Model2->Model1, dlaczego chcesz tak zrobić?

0

Mam model zadania matematycznego. Każde składa się z jednego lub więcej równań / nierówności, oraz z dziedziny. Oprócz tego, każde z równań ma swoją dziedzinę. A więc:

class Formula(models.Model):
    domain = models.ForeignKey("FormulaGroup", on_delete=models.CASCADE, null=True, related_name='f_domain')
    equation = models.TextField(max_length=1023, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

class FormulaGroup(models.Model):
    formulas = models.ManyToManyField(Formula)
    domain = models.ForeignKey("self", on_delete=models.CASCADE, null=True, related_name='fg_domain')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

Oczywiście modele te mam bardziej rozbudowane, jednak tutaj widać esencję. Grupa wzorów ma wzory, a każdy wzór ma dziedzinę, która jest zapisana przy pomocy grupy wzorów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1