0
У меня есть следующая модель django. В django-админ-модели таблицы TestCase в списке list_display я хочу отобразить последний комментарий и имя модификатора таблицы Remark.list_display модели с внешним ключом
models.py
from django.db import models
class Release(models.Model):
title = models.CharField(max_length=128)
start_time = models.DateField('Release Start Date')
release_date = models.DateField('Release Ended Date')
def __str__(self):
return self.title
class TestCase(models.Model):
query = models.CharField(max_length=256)
ksq_id = models.IntegerField()
status = models.CharField(max_length=64)
release = models.ForeignKey(Release) # Release can have many test cases
def __str__(self):
return self.query
class Remark(models.Model):
owner = models.CharField(max_length=64)
module = models.CharField(max_length=64)
comment = models.CharField(max_length=1024)
modified_ts = models.DateTimeField('date modified', auto_now=True)
modifier = models.CharField(max_length=64)
testcase = models.ForeignKey(TestCase) # Testcase can have many Re
admin.py
from django.contrib import admin
from kramer_release.models import Release, TestCase, Remark
class RemarksInline(admin.TabularInline):
model = Remark
extra = 0
class RemarkAdmin(admin.ModelAdmin):
list_display = ('owner', 'module', 'testcase_query')
def testcase_query(self, obj):
return obj.testcase.query
class TestCaseAdmin(admin.ModelAdmin):
inlines = [RemarksInline]
list_display = ('query', 'status')
admin.site.register(Release)
admin.site.register(TestCase, TestCaseAdmin)
admin.site.register(Remark, RemarkAdmin)
Спасибо за ваш ответ. Мне нужен комментарий и модификатор для двух разных полей. Я могу расширить свой код до двух функций. Разве эта операция не стоит дорого, так как она будет выполнять два запроса при каждой рендеринг строк? Есть ли другой простой или элегантный способ? –
ах ок, да определенно дорого, особенно. когда у вас много строк. – JamesO
Этот запрос можно более кратко выразить как 'obj.remark_set.latest ('modified_ts')' - хотя это не поможет с несколькими запросами. Я не уверен, что многое можно сделать по этому поводу. Выполнение нескольких столбцов без повторения запроса в двух разных функциях сложно, вам, вероятно, придется переопределить шаблон администратора. –