为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2023-07-05 16:37:29
我正在尝试打印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,基于其长度。
查看完整描述

3 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您不必为此重写方法 [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


查看完整回答
反对 回复 2023-07-05
?
RISEBY

TA贡献1856条经验 获得超5个赞

只需查询所有对象并循环查询集即可根据您的需要操作它们,如下所示:


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 (..., ...)


查看完整回答
反对 回复 2023-07-05
?
手掌心

TA贡献1942条经验 获得超3个赞

首批进口车型

from . models import Post

然后在你的函数中

data=Post.objects.values('content').all()

现在 data 具有内容字段 data=[{'content':first_value},{'content':second_value},..like this...] 中的所有值


查看完整回答
反对 回复 2023-07-05
  • 3 回答
  • 0 关注
  • 138 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信