У меня есть модель Django с общим отношением к User
или Organization
. Модель выглядит так:
class Project(models.Model):
# ...
client_type = models.ForeignKey(
'contenttypes.ContentType',
on_delete=models.SET_NULL,
blank=True,
null=True,
limit_choices_to=(
models.Q(app_label='users', model='user') |
models.Q(app_label='organizations', model='organization')
)
)
client_id = models.PositiveIntegerField(blank=True, null=True)
client = GenericForeignKey('client_type', 'client_id')
# ...
Я могу отобразить имя любого клиента этого проекта в списке администраторов проекта, используя:
@admin.register(models.Project)
class ProjectAdmin(admin.ModelAdmin):
list_display = (
'__str__',
'client',
)
Однако я не могу найти простой способ отобразить имя клиента на странице фактических изменений проекта. Я попробовал очевидное:
fields = (
'name',
'client',
)
Но это приводит к ошибке о том, что client
не является допустимым именем поля. Я прочитал Использование родовых отношений как встроенный раздел документации Django, но их пример кажется ... задом наперед?
Я просто хочу отобразить имя того, кто является клиентом, его не нужно редактировать. Есть предложения?