Можно ли в django применить list_filters для полей родительского объекта?

Я хочу отобразить временную метку, хранящуюся в родительской модели, чтобы она отображалась в моей модели. Кроме того, я хочу отображать ее в немецком формате. Это не проблема, но, конечно, я хочу иметь возможность сортировки по этой временной метке.

Одним из решений было бы создание нового поля DateTimeField в модели B, но тогда я буду хранить избыточную информацию. Как я могу сделать это с помощью Django?

Например:

#models.py
class A(models.Model):
    timestamp = models.DateTimeField(null=True)

class B(models.Model):
    key_to_a = models.ForeignKey(A, on_delete=models.CASCADE, null=True)

##########

#admin.py
class BAdmin(admin.ModelAdmin):
    def german_timestamp(self, B):
        return B.key_to_a.timestamp.strftime('%d-%m-%Y %H:%M:%S')

    german_timestamp.short_description = "timestamp"

    list_display = ("german_timestamp")
    list_filter = ("german_timestamp") #This breaks my code as there is no field called "german_timestamp"

Я не могу опубликовать комментарий, что, возможно, так и есть, но:

Пробовали ли вы установить метод __str__ в вашей модели A? Или метод german_timestamp в модели A (если вы планируете использовать другие форматы для даты), который возвращает A.timestamp в нужном вам формате.

Таким образом, вы можете просто установить key_to_a в вашем list_filter, и он будет использовать метод модели A.

Вернуться на верх