У объекта 'function' нет атрибута 'objects' Django, помогите мне - PullRequest
1 голос
/ 30 марта 2020

Я проектирую приложение Django и получаю сообщение об ошибке:

AttributeError at /
'function' object has no attribute 'objects'
Request Method:
GET
Request URL:
http://127.0.0.1:8000/
Django Version:
2.2.10
Exception Type:
AttributeError
Exception Value:
'function' object has no attribute 'objects'

Это мой views.py, который генерирует сообщение:

from django.shortcuts import render
from post.models import posts


def index(request):
    featured = Post.objects.filter(featured=True)
    context = {
        'object_list': featured
    }
    return render(request, 'index.html', context)

def blog(request):
    return render(request, 'blog.html', {})

def Post(request):
    return render(request, 'post.html', {})`

, и это my model.py

from django.db import models
from django.contrib.auth import get_user_model


user = get_user_model()

class author(models.Model):
    user = models.OneToOneField(user, on_delete=models.CASCADE)
    profile_picture = models.ImageField

class category(models.Model):
    title = models.CharField(max_length=20)

    def __str__(self):
        return self.title

class posts(models.Model):
    title = models.CharField(max_length=100)
    overview = models.TextField()
    timestamp = models.DateTimeField(auto_now_add=True)
    comment_count = models.IntegerField(default=0)
    author = models.ForeignKey(author, on_delete=models.CASCADE)
    thumbnail = models.ImageField()
    categories = models.ManyToManyField(category)
    featured = models.BooleanField()

    def __str__(self):
        return self.title

Спасибо за любую помощь.

1 Ответ

3 голосов
/ 30 марта 2020

Вы написали функцию представления с именем Post, поэтому Post.objects относится к функции Post, а не к модели. Кроме того, вы назвали свой режим posts вместо Post. Я настоятельно советую переименовать вашу модель в Post, так как Django модели обычно единичны и написаны в PerlCase :

from django.shortcuts import render
from post.models import <b>posts</b>


def index(request):
    featured = <b>posts.</b>objects.filter(featured=True)
    context = {
        'object_list': featured
    }
    return render(request, 'index.html', context)

def blog(request):
    return render(request, 'blog.html', {})

def <b>post</b>(request):
    return render(request, 'post.html', {})

Конечно, тогда вы должны соответственно переименовать переменные .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...