Изменение названия элементов внешнего ключа на странице администратора в 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" снова и снова.