Нахождение среднего значения IntegerField
Я пытаюсь создать новое поле данных, которое хранит значение в соответствии со средним значением 3 полей, а также хочу использовать orderby в файле views.py
class TodoList(models.Model):username = models.CharField(max_length = 50)
title = models.TextField(max_length = 100)
num1 = models.IntegerField()
num2 = models.IntegerField()
num3 = models.IntegerField()
#average = (num1 + num2 + num3)/3 -> NoneType error
Я пытаюсь создать новое поле данных, которое хранит значение в соответствии со средним значением 3 полей, а также хочу использовать orderby в файле views.py
def profile(request, pk):
user_object = User.objects.get(username = pk)
user_profile = Profile.objects.get(user = user_object) #user_profile has the things related to that usertodolist = TodoList.objects.filter(username = pk).order_by('average')
context = {
'user_object' : user_object,
'user_profile' : user_profile,
'todolist' : todolist,
}
return render(request, 'profile.html', context)
Я пытался использовать функцию property, но не смог order_by из этой функции. Но смог передать его в html-странице
#average = (num1 + num2 + num3)/3 -> Вы не можете этого сделать, класс Model предназначен только для определения схемы таблицы.
Вы должны будете рассчитать среднее отдельно и отправить его в своей модели
class TodoList(models.Model):
username = models.CharField(max_length = 50)
title = models.TextField(max_length = 100)
num1 = models.IntegerField()
num2 = models.IntegerField()
num3 = models.IntegerField()
average = models.DecimalField()
Запустите ваши миграции, затем передайте данные из места, где вы создаете объект TodoList.
Вероятно, это будет в ваших представлениях. Итак, в ваших представлениях сделайте
num1 = 123
num2 = 321
num3 = 231
average = (num1 + num2 + num3 )/ 3
todo = TodoList.objects.create(
username = "Any username",
title = "Any title",
num1 = num1,
num2 = num2,
num3 = num3,
average = average
)