Django list_display не работает в обратной модели
Django list_display не работает в обратной модели, я хочу list_display название и производственную компанию двух разделенных, но связанных таблиц.
вот мой model.py
class ProjectBaseModel(models.Model):
title = models.CharField("Titel", max_length=100, blank=False, unique=True)
former_title = models.CharField("ehemaliger Titel", max_length=100, blank=True)
title_international = models.CharField(
"Titel, international", max_length=100, blank=True, null=True, unique=True
)
program_length = models.PositiveSmallIntegerField(
verbose_name="Länge in Min.", blank=True, validators=[MaxValueValidator(300)]
)
def __str__(self):
return self.title
class Meta:
abstract = True
ordering = ["title"]
class FeatureFilm(ProjectBaseModel):
class Meta:
verbose_name = "Kinofilm"
verbose_name_plural = "Kinofilme"
class ProjectCompanySet(models.Model):
featurefilm = models.ForeignKey(
FeatureFilm, on_delete=models.CASCADE, null=True, blank=True
)
tv_movie = models.ForeignKey(
TvMovie, on_delete=models.CASCADE, null=True, blank=True
)
production_company = models.ForeignKey(
CompanyOrBranch,
related_name="production_company",
verbose_name="Produktionsfirma",
on_delete=models.SET_NULL,
blank=True,
null=True,
)
Моя таблица FeatureFilm наследуется от таблицы ProjectBaseModel. Я хочу отобразить список FeatureFilm в админке django backend. В списке я хочу показать соответствующее название, но я также хочу показать поле production_company, которое является одной строкой таблицы ProductionCompanySet, которая является дочерней таблицей, связанной с таблицей FeatureFilm. поле production_company является внешним ключом к таблице CompanyOrBranch.
Здесь вы можете увидеть эту таблицу:
class CompanyOrBranch(CompanyBaseModel):
name = models.CharField(
"Firma oder Niederlassung",
max_length=60,
blank=False,
)
и вот мой admin.py
from django.contrib import admin
from .models import (
FeatureFilm,
TvMovie,
ProjectCompanySet,
Vendor,
StaffList,
VendorVFX,
QuoteAndEffort,
)
class ProjectCompanySetInLine(admin.StackedInline):
model = ProjectCompanySet
fields = (
"production_company",
"co_production",
"distributor",
"broadcast",
"world_sales",
)
classes = ["collapse"]
extra = 0
class FeatureFilmAdmin(admin.ModelAdmin):
inlines = [
QuoteAndEffortSetInLine,
ProjectCompanySetInLine,
VendorVFXSetInLine,
VendorSetInLine,
StaffListSetInLine,
]
list_display = ["title", "projectcompanyset__production_company", ]
Мой вопрос был недостаточно точным. Да, таблица FeatureFilm указывает с помощью Foreignkey на таблицу ProjectCompanySet. а в ней есть поле: production_company. На самом деле я хочу, чтобы мне показывалась первая запись ProjectCompanySet и из нее первая компания. За прошедшее время мне удалось добиться того, что мне отображается фукция str в ProjectCompany. Но если у меня несколько таблиц ProjectCompanySet, то тоже несколько раз. Но мне нужна только первая !!! а потом еще и строка production_company. что мне пока не удалось. вот мой пока расширенный код:
class FeatureFilmAdmin(admin.ModelAdmin):
inlines = [
QuoteAndEffortSetInLine,
ProjectCompanySetInLine,
VendorVFXSetInLine,
VendorSetInLine,
StaffListSetInLine,
]
list_display = ["title", "program_length", "get_company_set"]
def get_company_set(self, Featurefilm):
return FeatureFilm.objects.filter(pk=Featurefilm.id).values(
"projectcompanyset__production_company__name"
)