【问题标题】:How to get all the fields from my model in Django如何在 Django 中从我的模型中获取所有字段
【发布时间】:2021-11-05 05:53:56
【问题描述】:

这是我的 Model.py

class BlogModel(models.Model):
    blog_id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=1000)
    content = FroalaField()
    user = models.ForeignKey(User, blank=True , null=True , on_delete=models.CASCADE)
    image = models.ImageField(upload_to='public')
    created_at = models.DateTimeField(auto_now_add=True)
    upload_to = models.DateTimeField(auto_now=True)

这是我的 View.py

def my_blogs(request):
    d = BlogModel.objects.all().filter(user = request.user)
    return render(request,"my_blogs.html",{'message' : d})

但是当我尝试获取 blog_id 和 created_at 字段时,它会显示一个错误,即请求的字段不存在于相应的表中。

但是您可以看到该字段是表本身。

请帮忙 这是我得到的错误 enter image description here

【问题讨论】:

  • 如果你点击了,也许你忘记了 (migrate)。留下您收到的代码和错误
  • 您迁移数据库是否正确?
  • 我已经编辑了帖子,但出现了错误
  • d.blog_id 没有意义,因为 QuerySet 是对象的集合。
  • 确保您在第一次迁移后进行了一些更改。您必须重复 makemigrations 和 migrate 命令。

标签: python django django-models django-views


【解决方案1】:

Django Queryset d 是一个对象列表。你必须遍历它:

for each_blog in d:
    each_blog.blog_id

这是您访问过滤方法查询集数据的方式。

【讨论】:

  • 谢谢大佬,我就这样试试
【解决方案2】:

BlogModel.objects.all().filter(user = request.user) 返回一个查询集,即满足条件的博客列表。

您可能希望遍历所有博客以显示它,可以按如下方式完成:

{% for blog in d %}
{{ blog.blog_id }}
{% endfor %}

【讨论】:

    【解决方案3】:

    在 views.py 中尝试:

    from .models import BlogModel
    
    def my_blogs(request):
        blogs = BlogModel.objects.all()
        return render(request, 'my_blogs.html', locals())
    

    在您的 html 模板 my_blog.html 中试试这个:

    {% for b in blogs %}
    {{ b.id }}: {{ b.created_at }}
    {% endfor %}
    

    【讨论】:

      【解决方案4】:

      你可以写在views.py:

      def my_blogs(request):
          # filtered queryset for login user
          queryset = BlogModel.objects.filter(user=request.user)
          return render(request,"my_blogs.html",{'blogs': queryset})
      

      在模板my_blogs.html中:

      {% for blog in blogs %}
          {{ blog.id }}
          {{ blog.created_at }}
      {% endfor %}
      

      BlogModel.objects.filter(user=request.user) 返回一个查询集,它是您的模型对象的列表。您可以通过在模板中迭代查询集来访问对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-30
        • 2020-07-07
        • 2011-02-04
        • 2017-05-20
        • 2015-05-31
        • 1970-01-01
        • 2020-02-14
        • 2011-04-08
        相关资源
        最近更新 更多