Python-Django Calculated Fields Konusu
-
selam arakdaşlar
https://www.tahribat.com/forum/pythonda-tasinabilir-proje-yapmak-241015
burada problemi mi aştım istediğim gibi çözebildim.
django modellerinden bir problem yaşıyorum. yapmak istediğimin sql karşılığı şu
select * , ( run_count - success_count ) as error_count from reports
biraz araştırdım bir kaç konu buldum ama çalıştıramadım en son şu durumda bıraktım
error_count değerim db kayıtlı değil çağırırken hesaplansın istiyorum
class Reports(models.Model): ....... run_count = models.IntegerField(null=True) success_count = models.IntegerField(null=True) ...... def error_count(self): return self.run_count - self.success_count
ve
class Reports(models.Model): ....... run_count = models.IntegerField(null=True) success_count = models.IntegerField(null=True) ........ @property def error_count(self): return self.run_count - self.success_count
bunları denedim fakat hep aşağıdaki hatayı aldım
Cannot resolve keyword 'error_count' into field. Choices are:
daha önce böyle bişey yapmış yada çözümü bilen varmı?
wert tarafından 29/Eyl/19 15:07 tarihinde düzenlenmiştir -
hocam error_count'un cagirildigi yeri atabilir misin? cagirildigi yerde bir hata olmali cunku ustteki 2 ornek de dogru diye biliyorum.
-
def most_error_job(request): liste=list() for row in list(Reports.objects.values('name','error_count').order_by('-error_count')[:20]): liste.append(list(row.values())) return JsonResponse(liste, safe=False)
bunu yaptığımda çalışıyor views.py de
def most_error_job(request): liste=list() for row in list(Reports.objects.values('name','run_count').order_by('-run_count')[:20]): liste.append(list(row.values())) return JsonResponse(liste, safe=False)
wert tarafından 29/Eyl/19 16:16 tarihinde düzenlenmiştir -
@HolyOne abi insert code block da python ekleyince js hatası veriyor
-
Merhabalar,
Bu tür işlemleri ORM tabanında yapmak istiyorsanız aggregate fonksiyonlarını kullanmalısınız.
from django.db.models import F
Reports.objects.aggregate(error_count=F('run_count') - F('success_count')).values('columns...', 'error_count')