Django - Как отобразить атрибут (имя) из объекта forgeinKey? - PullRequest
0 голосов
/ 30 марта 2020

У меня есть художник, у которого много картин, поэтому отношение много к одному. Итак, я получил

class Artist(models.Model):
    name   = models.CharField(max_length=120)
    age    = models.IntField()

class Paintings(models.Model):
    painting         = models.ImageField()
    painting_name    = models.CharField(max_length=120, default='', null=True)
    artist = models.ForeignKey(
       'Artist',
       related_name='paintings',
       on_delete=models.CASCADE,
       verbose_name= 'Künstler'
    )

Теперь, если я создам новую картину для художника, она не показывает мне точное имя художника, просто объект художника [id] artist object [id]

внутри моего admin.py Я пытаюсь определить

artist = Artist.name 
list_display = ('image_tag', artist, 'painting_name')

, но это не разрешено. Так как же я могу заменить Artist Object (id) фактическим name художника?

1 Ответ

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

В вашей модели Artist вы должны определить функцию __str__:

def __str__(self):
  return self.name # Or whatever way you want your Artist to show

Это говорит Django, как печатать этот объект.

Из Django Документация :

__str__()

Метод __str__() вызывается всякий раз, когда вы вызываете str() для объекта. Django использует str(obj) в нескольких местах. В частности, для отображения объекта на сайте администратора Django и в качестве значения, вставляемого в шаблон при отображении объекта. Таким образом, вы всегда должны возвращать хорошее, удобочитаемое представление модели из метода __str__().

...