Вы можете отобразить что угодно в list_display
, написав метод экземпляра с помощью декоратора @property
, который затем возвращает все, что вам нужно, и включив его в list_display
.Я не думаю, что это работает для list_filter
.
Итак, давайте вернемся к вашему ModelOne
классу:
class ModelOne(models.Model):
[...]
def __unicode__(self):
return self.field_one
@property
def model_two_other_field(self):
return ', '.join([m2.other_field for m2 in self.modeltwo_set.all()])
Затем в вашем ModelOneAdmin:
class ModelOneAdmin(admin.ModelAdmin):
list_display = ('field_one', 'field_two', 'field_three', 'model_two_other_field')
[...]
Для справки я хотел бы отметить, что при этом вам потребуется обращение к базе данных для каждого отображаемого экземпляра ModelOne.Таким образом, если вы перечисляете 50 экземпляров, вы получаете дополнительные 50 запросов (по одному на каждый вызов self.modeltwo_set.all()
).Это не обязательно означает, что вы не должны этого делать - это может быть правильный ответ, в зависимости от вашей ситуации.Просто знайте, что это может быть довольно дорогой операцией.