barsuk23013
@barsuk23013
Памагити

Как поменять тип данных на выходе из queryset модели?

Здравствуйте! Пытаюсь вывести отсортированный средний бал для каждой команды. Столкнулся с проблемой - элементы на выходе имеют строковый тип. Как и где в queryset для final_score явно указать тип int? Спасибо!
class Comand(models.Model):
    title = models.CharField(max_length=255)
    photo = models.ImageField(upload_to='photos/%Y/%m/%d/')
    first_evaluation = models.IntegerField(null=True,)
    second_appreciation = models.IntegerField(null=True)
    third_assessment = models.IntegerField(null=True)
    fourth_assessment = models.IntegerField(null=True)
    fifth_assessment = models.IntegerField(null=True)
    final_score = models.FloatField(null=True, blank=True)
    cat = models.ForeignKey('Category', on_delete=models.PROTECT, null=True)




    def save(self, *args, **kwargs):
        self.first_evaluation = int(self.first_evaluation)
        self.second_appreciation = int(self.second_appreciation)
        self.third_assessment = int(self.third_assessment)
        self.fourth_assessment = int(self.fourth_assessment)
        self.fifth_assessment = int(self.fifth_assessment)
        self.final_score = (self.first_evaluation + self.second_appreciation + self.third_assessment + self.fourth_assessment + self.fifth_assessment)/5
        super(Comand, self).save(*args, **kwargs)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return '/juds'

    def get_absolute_url2(self):
        return f'/update/{self.pk}/'

    class Meta:
        ordering = ['-final_score']

638a8afb8c11e665669792.jpeg
Если точней объяснить то для строкового типа 2.8 больше 17. Как понимаете это важно.
  • Вопрос задан
  • 43 просмотра
Решения вопроса 1
trapwalker
@trapwalker
Программист, энтузиаст
Пересоздайте БД для чистоты эксперимента, похоже раньше это поле было у вас строковым, вы в коде поменяли, а миграции правильные не сделали.
Если поможет, а данные в старой БД нужны, то либо правильно описать миграцию данных с конвертированием столбца и переименованием через промежуточный, либо просто ручками в БД один раз сделать и конвертнуть, если у вас в проде это всё ещё не запущено.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы