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.