Показать родительские поля модели в подробностях модели администратора Django - PullRequest
3 голосов
/ 17 апреля 2020

Я позволяю большинству моих моделей наследовать от:

class TimeStampedModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True
        get_latest_by = 'updated_at'

Примерно так:

class Sale(TimeStampedModel):
    ip_address = models.GenericIPAddressField(null=True)
    # ...

Однако, если я посещаю /admin/myapp/sale/123/change/, я вижу только поле ip_address.

Как мне также увидеть поля created_at и updated_at? Возможно, без необходимости указывать каждое поле Sale в списке.

1 Ответ

1 голос
/ 17 апреля 2020

Вы не можете показывать эти поля сейчас, потому что, когда вы добавляете auto_now_add в вашу модель, она также устанавливает editable=False в ваше поле. Итак, ваше поле доступно только для чтения. Начиная с docs :

Как и в настоящее время реализовано, установка для auto_now или auto_now_add значения True приведет к тому, что для поля будет установлено значение editable = False и пусто = True.

Чтобы отобразить любое поле только для чтения в вашем интерфейсе администратора, вы должны добавить readonly_fields = ['field_name'] определение в вашем представлении администратора следующим образом:

@admin.register(Sale)
class SaleAdmin(admin.ModelAdmin):
    readonly_fields = ['created_at','updated_at']
...