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", ]
Мне странно, но этот код создает просто поле ввода, а не выборку календаря.
Можете ли вы помочь мне преобразовать его в подборщик календарей?
Я не думаю, что это можно сделать из представления. Думаю, вам нужно будет переопределить эту часть шаблона. Я не уверен на 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' %}">
Постарайтесь сохранить переменные, чтобы не испортить функциональность представления.