有没有什么好方法可以修改列表视图中的各个数据字段?例如,我有一个博客文章模型,它看起来像
class Blog(models.Model):
create_time = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=250)
document = models.TextField(blank=True)我的列表视图如下所示:
class BlogPostListView(ListView):
model = Blog
template_name = 'blog/posts.html'
context_object_name = 'posts'
ordering = ['-create_time']显然,我希望以表格格式显示博客帖子列表,并且希望修改create_time的外观(当前显示‘3.07,2020,10:16 a.m.',但我只想要2020-3-7 10:16);帖子文档可能太长,无法在单元格中显示,我想将其截短为150个单词。
那么,在列表视图中实现这一点的更好方法是什么呢?
(我在StackOverflow中读到了一些类似的问题,但它要么是在模板中完成的,比如修改时间,而这并没有解决我的第二个需求,要么就是太模糊了,无法理解)。
发布于 2020-03-08 02:57:47
如果您想要定制模型和视图之间的表示。一种更快的方法是使用DRF的serializer和RetrieveAPIView。查看installation link。然后,您可以使用序列化程序来定制模型字段的表示。
下面是伪代码:
from rest_framework import serializers
from rest_framework.generics import RetrieveAPIView
class BlogSerializer(serializers.ModelSerializer)
def get_create_time(self, blog):
return self.create_time..strftime("%m/%d/%Y, %H:%M)
def get_document(self, blog):
return self.document[:151]
class BlogPostListView(RetrieveAPIView):
queryset = Blog.objects.all()
serializer_class = BlogSerializer
template_name = 'blog/posts.html'https://stackoverflow.com/questions/60580841
复制相似问题