Django: добавить поля модели в list_display и отображать связанные значения для каждой записи - PullRequest
0 голосов
/ 22 июля 2011

У меня есть следующие определения модели, см. Ниже.

models.py:

class Userstatus(models.Model):
    label = models.CharField(...)
    description = models.CharField(...)


class Foo(models.Model):
    title = models.CharField(...)
    visibility = models.ManyToManyField(Userstatus)

admin.py:

class FooAdmin(ModelAdmin):
    list_display = ('id', 'title', )

admin.site.register(Foo, FooAdmin)

В представлении списка администратораиз «Foo» через FooAdmin список list_display должен включать «метки» из Userstatus, поэтому появится столбец для каждой метки.Я мог бы создать и вызвать метод, который создает список для list_display.

Но тогда фактически не существует свойств или вызываемых элементов, которые позволили бы мне возвращать, скажем, логическое значение для каждого столбца метки, основываясь на видимости-многих-поле to-many.

Какие у меня варианты?Должен ли я попытаться перехватить вызываемый или атрибутный запрос для Foo и создать логический результат на лету?(Слишком частое попадание в БД или сортировка столбцов - другая проблема, но обо всем по порядку).

Ответы [ 2 ]

1 голос
/ 22 июля 2011

Документация Django говорит ...

Поля ManyToManyField не поддерживаются, потому что это повлечет за собой выполнение отдельного оператора SQL для каждой строки в таблице.Тем не менее, если вы хотите сделать это, дайте вашей модели собственный метод и добавьте имя этого метода в list_display.(Подробнее о пользовательских методах в list_display смотрите ниже.)

0 голосов
/ 22 июля 2011

Вы уверены, что хотите, чтобы Userstatus был таблицей базы данных, а не просто списком нескольких статусов, к которым можно получить доступ через кортеж "выборы"?

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