Необходимо отобразить поле для соответствующей модели в списке изменений администратора - Django 1.11 - PullRequest
0 голосов
/ 18 марта 2019

У меня есть такая модель:

class MyModel(models.Model):
    status = models.CharField(choices=ChoicesModel.MY_CHOICES, max_length=128, blnk=True, null=True)

У меня есть отдельная модель с вариантами повторного использования. Пока это хорошо работает.

Теперь в представлении администратора мне нужно показать эти варианты, но в другой модели list_display. Я перепробовал много вещей безуспешно.

Эти модели связаны с ForeignKey.

Так, в частности, мне нужна родительская модель list_display, чтобы показать выбор, сделанный для дочерней модели, связанной с ForeignKey.

ForeignKey определен в дочерней модели, поэтому он связан с родителем с помощью этого поля ForeignKey.

Итак, как я могу прочитать этот выбор, сделанный для дочернего объекта, из родительского и показать его на list_display его родительского объекта?

Я использую Django 1.11

EDIT

Пока что я пробовал с этим:

related = models.OneToOneField('ChildModel', null=True, on_delete=models.SET_NULL)

Тогда на админа:

def get_child_status(self, obj):
    return obj.related.my_choice_field
get_child_status.short_description = 'Child status' 

И, конечно же, в моем list_display:

list_display = ('field1', 'field2', 'get_child_status')

Когда я посещаю changelist представление родительской модели, меня бросает:

'NoneType' object has no attribute 'my_choice_field'

РЕДАКТИРОВАТЬ 2

Это полная трассировка:

Traceback (most recent call last):
File "C:\virtualenv\lib\site-packages\django\contrib\admin\utils.py", line 283, in lookup_field
f = _get_non_gfk_field(opts, name)
File "C:\virtualenv\lib\site-packages\django\contrib\admin\utils.py", line 317, in _get_non_gfk_field
field = opts.get_field(name)
File "C:\virtualenv\lib\site-packages\django\db\models\options.py", line 619, in get_field
raise FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name))
django.core.exceptions.FieldDoesNotExist: MyModel has no field named 'get_child_status'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...