Возвращать поле bool в наборе представлений django
Я хочу вернуть булево поле модели в наборе представления, но у меня возникает ошибка
модель:
class AdviceRequests(models.Model):
user = models.ForeignKey(
'accounts.User', on_delete=models.CASCADE,
related_name="user_advice_requests")
ADVICE_REQUESTS = (
('Yes', 'yes'),
('No', 'no'),
)
phone_number = PhoneNumberField(
default='+989121111111', null=False, blank=False)
advice_requests = models.CharField(
choices=ADVICE_REQUESTS,
default='YES',
max_length=10)
active = models.BooleanField(default=False)
Мое мнение:
class AdviceRequestsActiveView(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = AdviceRequestsSerializer
def get_queryset(self, **kwargs):
advice_req = AdviceRequests.objects.get(user=self.request.user)
active = advice_req.active
print(active)
return active
У меня есть вопрос, когда пользователь приходит на мой сайт, например, нужен ли вам совет? После этого у меня есть булево поле с именем active, когда пользователь отвечает на вопрос, неважно, да или нет
поле должно быть True, как мы просили этого пользователя раньше, не спрашивайте снова. теперь я хочу вернуть это поле в представлении.
Ошибка: object of type 'bool' has no len()
вы можете обновить свой метод с помощью этого: основная проблема: вы используете AdviceRequests.objects.get и в то же время наследуете от ListModelMixin
необходимо использовать .all() или .filter()
или
вам нужно наследоваться от другого класса, чтобы получить один obj
и попробуйте это
def get_queryset(self, **kwargs):
advice_req = AdviceRequests.objects.get(user=self.request.user)
active = advice_req.active
data = { "active": active }
return Response(data, status=200)