Тип объекта "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()