Можно ли в 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.