Модель определяет __str__, как я могу получить доступ к значению primary_key? - PullRequest
0 голосов
/ 08 декабря 2018

Я делаю веб-приложение, используя django и jinja2. В моем models.py мой класс определяет функцию __str__, которая возвращает дружественный текст при обращении к объектам этого класса.

class MySystem (models.Model):
    system_id         = models.AutoField(primary_key=True),
    system_name       = models.CharField(max_length=100)
    parent_system     = models.ForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL)
    def __str__(self):
        return "{} > {}".format(self.parent_system, self.system_name)

class Detail (models.Model):
    detail_id         = models.AutoField(primary_key=True)
    system_id         = models.ForeignKey(MySystem, on_delete=models.DO_NOTHING)
    title             = models.CharField(max_length=150)
    def __str__(self):
        return "{} > {}".format(self.system_id, self.title)

У меня есть объект Detail, и я хочу получить идентификатор его системы.Когда я пытаюсь получить доступ к первичному ключу, он возвращает строку вместо идентификатора.

<td> <a href="/base/system/{{detail.system_id}}" > {{ detail.system_id.system_name }} </a> </td>

Я попытался detail.system_id.system_id, и он возвращает django.db.models.fields.AutoField.Я хочу, чтобы он возвращал числовой идентификатор для ссылки.

1 Ответ

0 голосов
/ 08 декабря 2018

Хорошо, я нашел свое решение.Что мне нужно сделать, это detail.system_id.id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...