Django template- Если значение DateTimeField, взятое из Foreignkey, передается в url, возникает ошибка: Объект 'str' не имеет атрибута 'strftime'

Я совсем новичок в django и пытаюсь понять, почему я получаю AttributeError: 'str' object has no attribute 'strftime' при передаче объекта datetime в url из DateTimeField() значения через ForeignKey. Вот пример кода, который я использую и пытаюсь передать last_checked значение из Scrape Model.

model.py

class Site(models.Model):
     ...


class Scrape(models.Model):
     ...
     last_checked = models.DateTimeField(auto_now_add=True)
     site = models.ForeignKey(Site, on_delete=models.SET_NULL, related_name='scrapes')

url.py

from django.urls import path, register_converter
from . import views

class DateConverter:
    regex = '\d{4}-\d{1,2}-\d{1,2}'  

    def to_python(self, value):
        return datetime.strptime(value, '%Y-%m-%d').date()

    def to_url(self, value):
        return value.strftime('%Y-%m-%d')


register_converter(DateConverter, 'date')

urlpatterns = [    
    path('task/<pk>/<date:date_scraped>/', views.scrape_data_csv, name='scrape-csv'),
]

Если я передаю значение непосредственно из Scrape model queryset в template вот так. Все работает отлично!

<a href="{% url 'scrape-csv' site.pk scrape.last.last_checked %}" > </a>

Однако если я передаю значение в Site модель queryset через ForeignKey, что является способом, который мне нужен, здесь возникает ошибка:

{% for site in sites %}

    <a href="{% url 'scrape-csv' site.pk site.scrapes.last.last_checked %}" > </a>

{% endfor%}

Если мы проверили значения, то оба одинаковые datetime объекты:

{{ scrape.last.last_checked }} # April 8, 2022, 10:14 a.m.
{{ site.scrapes.last.last_checked }} # April 8, 2022, 10:14 a.m.

Мы можем даже использовать встроенный filter tags просто отлично. Пример:

{{ scrape.last.last_checked | timezone:'US/Eastern'|date:'F d, Y'}} #  April 8, 2022
{{ site.scrapes.last.last_checked | timezone:'US/Eastern'|date:'F d, Y'}} #  April 8, 2022

Может ли кто-нибудь сказать, почему site.scrapes.last.last_checked приводит к AttributeError: 'str'..., когда это не строка даты?

Если у данного сайта нет ни одного скрапа site.scrapes.last == None, вы получите site.scrapes.last.last_checked как пустую строку в шаблоне

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