如何解决DateTimeField对象没有属性strftime
我的主要代码是这样:
static
运行此代码时,我得到:
class Post(models.Model):
title = models.CharField(max_length=200,unique=True)
slug = models.SlugField(max_length=200,unique=True)
author = models.ForeignKey(User,on_delete=models.CASCADE,related_name='blog_posts')
updated_on = models.DateTimeField(auto_Now=True)
image = models.ImageField(upload_to='images/%Y/%m/%d/',blank=True)
content = models.TextField()
created_on = models.DateTimeField(auto_Now_add=True)
status = models.IntegerField(choices=STATUS,default=0)
publishdate = created_on.strftime('%Y/%m')
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
引用发布日期
strftime与datetime.datetime一起使用,并且DateTimeField转换为datetime.datetime,所以我在做什么错了?
我试图将datetime.datetime转换为无效
编辑:看到答案后,我认为我应该验证我要做什么
我正在尝试将日期添加到urls.py中的该URL:
'DateTimeField' object has no attribute 'strftime'
编辑2:我已将代码更新为此:
urlpatterns = [
path('',views.PostList.as_view(),name='home'),path('<publishdate>/<slug:slug>',views.PostDetail.as_view(),name='post_detail'
]
,输出为:
class Post(models.Model):
title = models.CharField(max_length=200,default=0)
created_on_string = created_on.value_to_string(created_on)
publishdate = strptime(created_on_string,'%Y/%m')
class Meta:
ordering = ['-created_on']
def __str__(self):
return self.title
解决方法
在类级别,created_on
是DateTimeField
,而不是datetime
对象(不是类)持有的Post
对象。如果要添加格式化它的属性,可以使用:
class Post(models.Model):
# …
created_on = models.DateTimeField(auto_now_add=True)
@property
def publishdate(self):
return self.created_on.strftime('%Y/%m')
# …
话虽这么说,格式化数据通常不是模型的任务。模型用于存储和表示数据。例如,在模板中,您可以使用|date
template tag [Django-doc]以指定格式格式化datetime
对象。例如,对于给定的Post
对象post
,您可以将其格式化为:
{{ post.created_on|date:'Y/m' }}
对于URL,您可以使用两个参数:
urlpatterns = [
path('',views.PostList.as_view(),name='home'),path(
'<int:year>/<int:month>/<slug:slug>',views.PostDetail.as_view(),name='post_detail'
)
]
在您的视图中,然后进行以下过滤:
class PostDetail(DetailView):
model = Post
def get_queryset(self,*args,**kwargs):
return super().get_queryset(*args,**kwargs).filter(
created_on__year=self.kwargs['year'],created_on__month=self.kwargs['month']
)
然后,您可以在模板中使用post
对象链接到视图,
{% url 'post_detail' post.created_on.year post.created_on.month post.slug %}
,
在类级别向属性添加self
是否行得通?
publishdate = self.created_on.strftime('%Y/%m')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。