Django модели ошибка, Теперь я хочу вычесть из одного charfiled другой, но всегда равный 0, как по умолчанию,. Я новичок в работе с django

models.py -- там я создаю поле leave_links 10g и хочу вычислить его как substract by_projects_10g with on_facts_10g

class KT(models.Model):
  by_projects_10g = models.CharField(max_length=255)
  by_projects_100g = models.CharField(max_length=255)enter code here
  on_facts_10g = models.CharField(max_length=255)
  on_facts_100g = models.CharField(max_length=255)
  #now I want do like this, but an error comes out
  leave_links_10g = models.IntegerField(default=0)

  def calculate_leave_links(a,b):
    leave_links_10g = a -b 
    return leave_links_10g

  def query_links(self):
    calculate_leave_links(self.by_projects_10g, self.on_facts_10g)

#####views.py
def index(request):
  KT_links = KT.objects.all().values()
  template = loader.get_template('index.html')
  context = {
    'KT_links': KT_links,
  }
  return HttpResponse(template.render(context, request))

если вам не нужно делать запрос к db на поле leave_links_10g, я предлагаю использовать @property:

@property
def leave_links_10g(self):
    try:
        return int(self.by_projects_10g) - int(elf.on_facts_10g)
    except ValueError:
        return 0

вы можете получить доступ к нему как к обычному полю, например:

kt_object.leave_links_10g

но если вы хотите выполнять некоторые операции с БД, такие как filter или order_by, вам нужно переопределить метод save модели KT:

def save(self, *args, **kwargs):
    try:
        self.leave_links_10g =  int(self.by_projects_10g) - int(elf.on_facts_10g)
    except ValueError:
       self.leave_links_10g = 0
    super().save(*args, **kwargs)  # Call the "real" save() method.
Вернуться на верх