Может “list_display” в атрибуты дисплея Django ModelAdmin полей ForeignKey?

Для меня это произошло после конфликта слиянием.

Я попытался очистить и удалить папку сборки, но ни одна из них не помогла. Эта проблема продолжалась независимо. Затем я повторно связал ссылку, удалив группы, которые были проблематичными и повторно добавлены в проект, и это сработало.

275
задан daaawx 16 April 2019 в 11:33
поделиться

6 ответов

Как другая опция, можно сделать взлеты взгляда как:

class UserAdmin(admin.ModelAdmin):
    list_display = (..., 'get_author')

    def get_author(self, obj):
        return obj.book.author
    get_author.short_description = 'Author'
    get_author.admin_order_field = 'book__author'
444
ответ дан Denilson Sá Maia 23 November 2019 в 02:08
поделиться

Это уже принятый, но если существуют какие-либо другие макеты там (как я), который сразу не получил его от в настоящее время принятый ответ , вот является немного большим количеством детали.

образцовый класс, на который ссылаются ForeignKey потребности иметь __unicode__ метод в нем, как здесь:

class Category(models.Model):
    name = models.CharField(max_length=50)

    def __unicode__(self):
        return self.name

, Который имел значение для меня и должен относиться к вышеупомянутому сценарию. Это работает над Django 1.0.2.

6
ответ дан Community 23 November 2019 в 02:08
поделиться

Можно показать то, что Вы хотите в дисплее списка при помощи вызываемого. Это было бы похоже на это:


def book_author(object):
  return object.book.author

class PersonAdmin(admin.ModelAdmin):
  list_display = [book_author,]
10
ответ дан 23 November 2019 в 02:08
поделиться

Согласно документации, можно только отобразиться __unicode__ представление ForeignKey:

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#list-display

Кажется нечетным, который это не поддерживает 'book__author' формат стиля, который еще используется везде в API DB.

Повороты там билет для этой функции , который отмечен, как не Зафиксирует.

20
ответ дан Mechanical snail 23 November 2019 в 02:08
поделиться

Ответ AlexRobbins работал на меня, за исключением того, что первые две строки должны быть в модели (возможно, это было принято?), и должен сослаться сам:

def book_author(self):
  return self.book.author

Затем администраторская часть работает приятно.

-1
ответ дан 23 November 2019 в 02:08
поделиться

Как и все остальные, я тоже использовал callables. Но у них есть один недостаток: по умолчанию на них нельзя заказывать. К счастью, для этого есть решение:

Django> = 1.8

def author(self, obj):
    return obj.book.author
author.admin_order_field  = 'book__author'

Django <1.8

def author(self):
    return self.book.author
author.admin_order_field  = 'book__author'
63
ответ дан 23 November 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: