[Django]-Type object 'X' has no attribute 'objects'

56πŸ‘

The line notifications = Notification.objects.all() is referencing the Notification View class defined in api.py and not models.py.

The easiest way to fix this error is to rename the Notification class in either api.py or models.py so that you can refer to your model properly. Another option would be to use named imports:

from .models import Notification as NotificationModel

class Notification(generics.ListAPIView):
    ...
    def get_queryset(self):
        notifications = NotificationModel.objects.all()
        ...
πŸ‘€Derek Kwok

33πŸ‘

Add objects = models.Manager() to your model, or any other custom manager that you are using and/or define.

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()
πŸ‘€Paul Tuckett

1πŸ‘

Not the answer to this question but if you have come via Google you may have accidentally marked your model as abstract and are trying to query it directly, in which case you need to remove:

    class Meta:
        abstract = True
πŸ‘€Cam Rail

Leave a comment