Как получить все поля из моей модели в Django

Вот мой 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, выдается ошибка, что запрашиваемые поля отсутствуют в соответствующей таблице.

Но вы видите, что поле находится в самой таблице.

Помогите пожалуйста

Django Queryset d - это список объектов. Вы должны просмотреть его в цикле:

for each_blog in d:
    each_blog.blog_id

Вот как вы получаете доступ к данным для набора запросов метода фильтрации.

BlogModel.objects.all().filter(user = request.user) возвращает набор запросов, то есть список блогов, удовлетворяющих условиям.

Возможно, вы захотите перебрать все блоги, чтобы отобразить их, что можно сделать следующим образом:

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

Try in 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 %}

Вы можете написать в 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) возвращает queryset, который является списком объектов вашей модели. Вы можете получить доступ к объекту, итерируя queryset в шаблоне.

Вернуться на верх