Как получить значение переменной сообщения в моделях django ForeignKey? - PullRequest
0 голосов
/ 03 апреля 2019

Я создал две модели, одну для поста, а другую для комментариев.Я хочу получить заголовок сообщения в str , запросив переменную forginKey в классе комментариев, возможно ли это вообще?

Я пытался использовать Comment._meta.get_field('post_id'), но это не работает, и я получаюэта ошибка

Exception Value:    
must be str, not ForeignKey

Мои модели:

class Post(models.Model):
    title = models.CharField(max_length=150)
    content = models.TextField(blank=True, null=True)
    image = models.ImageField(upload_to="media/posts", null=True, blank=True)

    def __str__(self):
        return self.title

class Comment(models.Model):
    post_id = models.ForeignKey("post.Post", on_delete=models.CASCADE) 

    name = models.CharField(max_length=150)
    email = models.EmailField(max_length=254)
    content = models.TextField(blank=False, null=False)

    def __str__(self):
        return self.name + " in post: " + Comment._meta.get_field('post_id')

Я хочу получить значение заголовка для каждого комментария, размещенного на сайте, для отображения в админке Django.

1 Ответ

1 голос
/ 03 апреля 2019

Как насчет этого?

class Post(Model):
    title = CharField(...)

class Comment(Model):
    post_id = ForeignKey(Post, ...)
    def __str__(self):
        return "{} in post: {}".format(self.name, self.post_id.title)

И, кстати, внешние ключи обычно не называются заканчивающимися на _id, так как это вызывает то, что поле просто содержит целое число с идентификатором объекта, которыйдело не в этом: к полноценному Post объекту можно получить доступ.

...