#python #django #django-models #foreign-keys #admin
Вопрос:
Я уже пробовал несколько решений, найденных по другим темам, но ничего не работает.
У меня проблема с внешним ключом в администраторе Django. Невозможно просмотреть запись или добавить новую запись.
У меня есть таблица convertion_factor
без нулевых значений. см. раздел Конфигурация PostgreSQL
Это моя модель :
class convertion_factor(models.Model): foodID = models.ForeignKey('food_name', on_delete=models.CASCADE) measureID = models.ForeignKey('measure_name', on_delete=models.CASCADE) conversionFactorValue = models.FloatField() convFactorDateOfEntry = models.DateField(auto_now=False, auto_now_add=False)
Чтобы просмотреть данные в Django Admin, вам необходимо добавить def __str__(self):
их в модель. Хорошо, давайте сделаем это :
class convertion_factor(models.Model): foodID = models.ForeignKey('food_name', on_delete=models.CASCADE) measureID = models.ForeignKey('measure_name', on_delete=models.CASCADE) conversionFactorValue = models.FloatField() convFactorDateOfEntry = models.DateField(auto_now=False, auto_now_add=False) def __str__(self): return self.conversionFactorValue
Теперь, когда я захожу в администрацию Django и нажимаю на модель convertion_factor
, я вижу таблицу просто отлично, но когда я пытаюсь нажать на запись, чтобы отредактировать ее, у меня возникает эта ошибка :
Ошибка ввода в /admin/kalo/convertion_factor/19505/изменение/
Exception Type: TypeError at /admin/kalo/convertion_factor/19505/change/ Exception Value: __str__ returned non-string (type float)
У меня сложилось впечатление, что это ошибка из-за внешнего ключа, потому что с моими другими моделями без внешнего ключа все работает просто отлично.
В функции def __str__(self):
, которую я пробовал :
return self.foodID.__str__
но та же ошибка
return str(self.foodID)
но та же ошибка
У тебя есть какие-нибудь идеи ?
Спасибо за помощь.
Комментарии:
1.
return str(self.foodID)
Выдает ли ту же ошибку?2. Да, точно так же. @бичанна
Ответ №1:
Этот код корректно работает со значениями с плавающей точкой и возвращает значение с плавающей точкой в виде строкового значения.
def __str__(self): return str(self.conversionFactorValue)
Я добавил скриншот ниже.
Комментарии:
1.Да, я пробовал. Я могу отобразить данные так же, как на вашем скриншоте, но если я нажму на данные 14.6, у меня все равно будет ошибка :
TypeError at /admin/kalo/food_name/503380/change/
__str__ returned non-string (type tuple)
@BharatNaik