Django: возвращая ошибку __str__ при попытке добавить новый экземпляр модели из панели администратора - PullRequest
0 голосов
/ 05 марта 2020

Когда я пытаюсь добавить новый экземпляр любой модели, которая имеет Campus в качестве внешнего ключа, я получаю эту ошибку, и я ошеломлен.

error message

Вот код для модели Campus

from django.db import models

class Campus(models.Model):
name = models.TextField(max_length = 100, default=None)
description = models.TextField(max_length = 100, default=None)

def __str__(self):
    return self.name

Я не уверен, в чем проблема с функцией str , так как это то, что я делаю для всех моих моделей c.

Спасибо за любую помощь, которую вы можете оказать

1 Ответ

1 голос
/ 05 марта 2020

Проблема не в __str__ из Campus. Это какая-то другая модель (или что-то еще), которая имеет __str__ что-то, что возвращает объект Campus (вероятно, с ForeignKey / OneToOneField) и, следовательно, не вызывает __str__ на этом объекте.

Так обычно происходит, если у вас есть модель, которая выглядит следующим образом:

class MyOtherModel(models.Model):
    campus = models.ForeignKey(Campus, on_delete=models.CASCADE)

    # …

    def __str__(self):
        return <s>self.campus</s>

Здесь метод __str__, таким образом, возвращает объект Campus, а не строку , Это можно исправить, преобразовав объект Campus в str ing, например, вызвав str(..) для него:

class MyOtherModel(models.Model):
    campus = models.ForeignKey(Campus, on_delete=models.CASCADE)

    # &hellip;

    def __str__(self):
        return <b>str(</b>self.campus<b>)</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...