Django сохраняет дочерний элемент из родительского
У меня есть этот код, который работает нормально:
class Model1(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=50)
class Meta:
verbose_name_plural = "Model1s"
ordering = ('sioticket',)
def def save(self, *args, **kwargs):
super(Model1, self).save(*args, **kwargs)
class Model2(models.Model):
name = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
cpm = models.CharField(max_length=50)
class Meta:
verbose_name_plural = "Model2s"
ordering = ('sioticket',)
def save(self, *args, **kwargs):
vartype = self.name.type
self.cpm = vartype
return super(Model2, self).save(*args, **kwargs)
Мне нужно выполнить save() Model2 из save() Model1. Или, из save() модели 1, выполните:
vartype = self.name.type
self.cpm = tipo
Но проблема в том, что в родителях я не знаю, можно ли получить доступ к save() его дочерних классов или как изменить значения его дочерних классов из родителей save.
Также я должен сказать, что, если я создаю новую Модель1 и Модель2, все работает нормально, но если я обновляю тип из Модели1, он не копируется в "cmp" Модели2.
Я пробовал следующее:
class Model1(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=50)
class Meta:
verbose_name_plural = "Model1s"
ordering = ('sioticket',)
def def save(self, *args, **kwargs):
super(Model1, self).save(*args, **kwargs)
children = self.objects.all()
for child in children:
if child._meta.verbose_name_plural=="Model2s":
child.save()
class Model2(models.Model):
name = models.ForeignKey(Model1, on_delete=models.CASCADE, null=True, blank=True)
cpm = models.CharField(max_length=50)
class Meta:
verbose_name_plural = "Model2s"
ordering = ('sioticket',)
def save(self, *args, **kwargs):
tipo = self.name.type
self.cpm = tipo
return super(Model2, self).save(*args, **kwargs)
Обратите внимание, что:
children = self.objects.all()
for child in children:
if child._meta.verbose_name_plural=="Model2s":
child.save()
Но у меня следующая ошибка:
Manager isn't accessible via Model1 instances
Я новичок в Django и буду благодарен за помощь.
В конце я самостоятельно нашел решение.
Решением было:
for obj in Model1.objects.all():
for i in obj.model2_set.all():
i.save()
Спасибо всем!