Вы только что создали экземпляр класса, но не сохранили calculations()
в переменной, а также дайте своим именам классов заглавные буквы. Также ваш super
вызов неверен, он должен ссылаться на вашу модель, а не Blog
.
Причина, по которой self.one
, вероятно, не имеет значения, заключается в том, что вы выполняете работу перед вызовом суперсохранительного вызова. Так что вместо этого делайте свою работу после сохранения "себя".
class FreshData(models.Model):
name = models.CharField(max_length=20)
one = models.IntegerField()
two = models.IntegerField()
def save(self, *args, **kwargs):
super(FreshData, self).save(*args, **kwargs)
calculations = Calculations()
calculations.three = self.one + self.two
calculations.save()
class Calculations(FreshData):
three = models.IntegerField()
Кроме того, я не уверен, почему вам нужно расширить с FreshData
, в вашем примере Calculations
унаследует поля name
, one
и two
от FreshData
. Если вы хотите сохранить вычисления только в отдельной модели, просто сохраните ссылку на исходные данные, например, так:
class Calculations(models.Model):
fresh_data = models.ForeignKey(FreshData)
three = models.IntegerField()
Тогда просто убедитесь, что передали fresh_data
при создании вашего Calculations
:
def save(self, *args, **kwargs):
super(FreshData, self).save(*args, **kwargs)
calculations = Calculationrs(fresh_data=self)
...