Изменение названия элементов внешнего ключа на странице администратора в Django

Я создал две модели Django, где поле из одной модели является внешним ключом для другой (как показано ниже).

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)


class Targets(models.Model):
    name = models.CharField(max_length=100)
    unit = models.ForeignKey(MicroNutrientUnits)
    ...

Эти модели затем регистрируются на сайте администратора через admin.site.register, При добавлении элемента в таблицу целевые единицы корректно отражают элементы из единиц таблицы, однако представляются в раскрывающемся списке с именами единиц объектов для каждой записи.

Как я могу установить имя в раскрывающемся списке администратора на Units.name на странице конфигурации администратора?

1 ответ

Решение

У меня была такая же проблема, когда я начал играть с экранами администратора. Я не знаю, есть ли лучший способ сделать это, но я изменил файл models.py, чтобы сообщить моим классам, что нужно возвращать в качестве строки по умолчанию. В вашем случае я бы добавил следующее в определение класса Units.

class Units(models.Model):
    name = models.CharField(max_length=10, primary_key=True)
    symbol = models.CharField(max_length=5)

    def __str__(self):
        return self.name

Таким образом, когда вы используете ссылку внешнего ключа на таблицу, django будет отображать имя каждого блока в раскрывающемся списке, а не просто слово "Units" снова и снова.

Другие вопросы по тегам