Тип объекта "X" не имеет атрибутов "объекты"

Я использую Django и Django Rest Framework 2.4.0

Я получаю ошибку атрибута type object 'Notification' has no attribute 'objects'

models.py

class Notification(models.Model):
    NOTIFICATION_ID = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, related_name='user_notification')
    type = models.ForeignKey(NotificationType)
    join_code = models.CharField(max_length=10, blank=True)
    requested_userid = models.CharField(max_length=25, blank=True)
    datetime_of_notification = models.DateTimeField()
    is_active = models.BooleanField(default=True)

serializers.py:

class NotificationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Notification
        fields = (
            'type',
            'join_code',
            'requested_userid',
            'datetime_of_notification'
        )

api.py:

class Notification(generics.ListAPIView):
    serializer_class = NotificationSerializer
    def get_queryset(self):
        notifications = Notification.objects.all()
        return notifications

Может кто-нибудь помочь мне понять это? Он не работает в api.py на линии notifications = Notification.objects.all()

Ответ 1

Строка notifications = Notification.objects.all() ссылается на класс Notification, определенный в api.py, а не на models.py.

Самый простой способ исправить эту ошибку - переименовать класс Notification в api.py или models.py, чтобы вы могли правильно ссылаться на свою модель. Другой вариант - использовать именованный импорт:

from .models import Notification as NotificationModel

class Notification(generics.ListAPIView):
    ...
    def get_queryset(self):
        notifications = NotificationModel.objects.all()
        ...

Ответ 2

Добавьте objects = models.Manager() к вашей модели или любому другому пользовательскому менеджеру, который вы используете и/или определяете.

class Notification(models.Model):
    NOTIFICATION_ID = models.AutoField(primary_key=True)
    user = models.ForeignKey(User, related_name='user_notification')
    type = models.ForeignKey(NotificationType)
    join_code = models.CharField(max_length=10, blank=True)
    requested_userid = models.CharField(max_length=25, blank=True)
    datetime_of_notification = models.DateTimeField()
    is_active = models.BooleanField(default=True)

    objects = models.Manager()