У меня есть две модели Tender
и Status
, соединенные в связи M2M с помощью таблицы моста TenderStatus
. В таблице моста есть дополнительное поле даты. Я использую встроенную форму для админки. Но я хочу иметь возможность отображать дату из промежуточной таблицы в представлении администратора. У меня есть доступ к name статуса, поэтому я могу легко показать, например, список статусов, разделенных запятыми, но я не могу понять, как получить доступ к полю даты. Я безуспешно пытался использовать вызываемый объект в классе администратора (я думаю, что просто не знаю, как получить доступ к полю даты из вызываемого объекта). Я также создал специальную функцию str для TenderStatus, но, похоже, она не обращает на это внимания. Вот код, который у меня есть:
models.py
class Tender(models.Model):
name = models.CharField(max_length=255)
tender_status = models.ManyToManyField(
'Status',
through='TenderStatus',
related_name='tender_status'
)
class Meta:
managed = False
db_table = 'tender'
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def __str__(self):
return self.name
class TenderStatus(models.Model):
tender = models.ForeignKey('Tender', on_delete=models.DO_NOTHING, blank=True, null=False)
status = models.ForeignKey('Status', on_delete=models.DO_NOTHING, null=False,)
date = models.DateField(blank=True, null=False)
def __str__(self):
return str(self.date) + ': ' + str(self.status)
class Meta:
managed = False
db_table = 'tender_status'
class Status(models.Model):
status = models.CharField(max_length=50)
short_name = models.CharField(max_length=5)
class Meta:
managed = False
db_table = 'status'
def __str__(self):
return str(self.status)
admin.py
class TenderAdmin(admin.ModelAdmin, ExportCsvMixin):
list_display = ['name', 'status_list']
def status_list(self, obj):
# I BELIEVE THIS IS THE ELEMENT I NEED HELP WITH, HOW TO CALL THE DATE HERE
# THE FOLLOWING DOES NOT WORK
return [str(x.date) + ': ' + x.status for x in obj.tender_status.all()]
class Meta:
model = 'Tender'
Примечание. Мое приложение не использует пользовательские представления, оно только использует модели администратора. У меня нет возможности добавлять пользовательские представления, поскольку организация не разрешает это.
Изменить: Чтобы уточнить, я ищу способ перечислить статусы + даты в виде строки, отформатированной в list_display
, используя только то, что доступно в django -admin.