DateField как поле поиска. Как сделать if похожим на календарь

class OveroptimisationIdentifiers(models.Model):
    date = models.DateField(blank=True, null=True)
    region = models.ForeignKey(SiteRegions, models.CASCADE)
    site = models.ForeignKey(SiteSites, models.CASCADE)

    def __str__(self):
        return "{}: {}: {}".format(self.date, self.region, self.site)

    class Meta:
        managed = False
        db_table = 'overoptimisation_identifiers'
        unique_together = (('date', 'site', 'region'),)



@admin.register(OveroptimisationIdentifiers)
class OveroptimisationIdentifiersAdmin(admin.ModelAdmin):
    exclude = []
    actions = [scrape_arsenkin, ]
    list_filter = ["date", ]
    search_fields = ["date", ]

Мне странно, но этот код создает просто поле ввода, а не выборку календаря.

enter image description here

Можете ли вы помочь мне преобразовать его в подборщик календарей?

Я не думаю, что это можно сделать из представления. Думаю, вам нужно будет переопределить эту часть шаблона. Я не уверен на 100%, но поле выглядит жестко закодированным внутри шаблона django.

Прочитайте здесь, как переопределить шаблон.

Перейдите к соответствующему шаблону по адресу "django/contrib/admin/templates/admin/search_form.html"

Копировать все содержимое в буфер обмена.

Создайте структуру папок следующим образом:

  • создайте папку templates/ внутри вашего проекта. То есть на том же этапе, где находятся все папки вашего приложения и ваши файлы manage.py.
  • templates/admin/your_custom_app_name/
  • создайте файл с полным путем к файлу: your_project/templates/admin/your_custom_app_name/search_form.html

Затем вставьте содержимое из буфера обмена. Напечатайте там несколько слов "hello world". Затем проверьте, появляется ли теперь ваш "hello world" где-нибудь внутри представления, которое вы хотите настроить. Если он появился, вы успешно переопределили шаблон.

К сожалению, я очень плохо разбираюсь в html. Остальное вы должны доработать самостоятельно. Но вам нужно заменить эту часть:

<label for="searchbar"><img src="{% static "admin/img/search.svg" %}" alt="Search"></label>
<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" autofocus{% if cl.search_help_text %} aria-describedby="searchbar_helptext"{% endif %}>
<input type="submit" value="{% translate 'Search' %}">

Постарайтесь сохранить переменные, чтобы не испортить функциональность представления.

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