Usar solo el año en django model DateField

publicado por: Anonymous

En este momento me gustaría mostrar agarrar el año del campo DateField o que se pueda escoger de alguna manera en el admin. Lo que no quiero es día y mes, porque solamente me interesa el año. Creo que no hay un YearField, para este tipo de situaciones.

Estaba intentando esta solución https://stackoverflow.com/questions/1517474/only-showing-year-in-django-admin-a-yearfield-instead-of-datefield pero tengo me da un error al decir que NameError: name '_' is not defined y en otra ocasión me ha dado TypeError: append() takes exactly one argument (2 given)

Si alguien puede ayudarme lo agradeceré

solución

para solucionarlo necesitas hacer lo siguiente:

  1. Tu campo puede ser DateField o DateTimeField.
timestamp = models.DateField()
  1. Dentro de tu modelo Django crear un property como este:
class MyModel(models.Model):
    name = models.CharField(max_length=1000)
    timestamp = models.DateField()

    @property
    def only_year(self):
        return self.timestamp.strftime('%Y')
  1. En tu archivo admin.py, en el ModelAdmin debes agregar este property en tu list_display:
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    list_display = ("name", "timestamp", "only_year")

Esto permitirá que en la tabla que te genera el admin Django se visualice solamente el año en lugar de toda la fecha.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *