如何从views.py中的数据库中获取内容?

我正在尝试打印content数据库中的字段,这是我的models.py文件:


class Post(models.Model):

    title = models.CharField(max_length=100)

    content = models.TextField()

    read_time = models.TimeField(null=True, blank=True)

    view_count = models.IntegerField(default=0)

这是我的views.py文件:-


class PostDetailView(DetailView):

    model = Post

    def get_object(self):

        obj = super().get_object()

        obj.view_count += 1

        obj.save()

        return obj

    

    def get_context_data(self, **kwargs):

        context = super().get_context_data(**kwargs)

        all_texts = {

            'texts': context.content

        }

        print(all_texts[texts])

        return context

我正在尝试从数据库中访问字段中的所有数据content,但是上述方法不起作用,有什么方法可以访问字段中的所有数据content,因为我必须对这些字段执行一些操作,例如计算任何内容的长度read_time,基于其长度。


米脂
浏览 145回答 3
3回答

12345678_0001

您不必为此重写方法 [Django-doc],因为该对象已经传递到上下文.get_queryset(…)。您可以简单地在模板中渲染它:{{ object.content }}如果您确实在上下文中需要它,您可以将其实现为:class PostDetailView(DetailView):    model = Post        # …        def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        context.update(            texts=self.object.content        )        return context如果您需要所有帖子对象,您可以将它们添加到上下文中:class PostDetailView(DetailView):    model = Post        # …        def get_context_data(self, **kwargs):        context = super().get_context_data(**kwargs)        context.update(            texts=self.object.content,            posts=Post.objects.all()        )        return context并将它们呈现为:{% for post in posts %}    {{ post.content }}{% endfor %}在增加视图计数器以避免竞争条件时,最好使用表达式F[Django-doc]:class PostDetailView(DetailView): model = Post def get_object(self): obj = super().get_object() 视图 = obj.view_count obj.view_count = F('view_count') + 1 obj.save() obj.view_count =视图+1 返回 obj

RISEBY

只需查询所有对象并循环查询集即可根据您的需要操作它们,如下所示:def your_view(self, **kwargs):    # Get all table entries of Model Post    queryset = Post.objects.all()    # Loop each object in the queryset    for object in queryset:    # Do some logic        print(object.content)    [...]    return (..., ...)

手掌心

首批进口车型from . models import Post然后在你的函数中data=Post.objects.values('content').all()现在 data 具有内容字段 data=[{'content':first_value},{'content':second_value},..like this...] 中的所有值
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python