Разрешения объекта для нескольких объектов в DRFPython

Программы на Python
Anonymous
Разрешения объекта для нескольких объектов в DRF

Сообщение Anonymous »

Я не могу прописывать разрешения. У меня есть модели учетных записей, сайтов и информационных данных:
Аккаунты

Код: Выделить всё

class Accounts(models.Model):
user = models.ForeignKey(to=User, on_delete=models.SET_NULL, null=True, editable=True, blank=True, verbose_name='Пользователь')
name = models.CharField(max_length=255, unique=True, verbose_name='Название')

def __str__(self):
return self.name
Сайты и информация

Код: Выделить всё

class Sites(models.Model):
account = models.ForeignKey(to=Accounts, on_delete=models.RESTRICT)
name = models.CharField(max_length=255)

def __str__(self):
return self.name

class Information(models.Model):
site = models.ForeignKey(to=Sites, related_name='information', on_delete=models.RESTRICT)
name_of_data = models.CharField(max_length=255)
data = models.CharField(max_length=255)

def __str__(self):
return self.name_of_data
Мое представление должно возвращать список сайтов и информацию для каждого сайта, в зависимости от того, какая учетная запись запрошена (например, /accounts/3 должен возвращать все сайты и информацию, принадлежащую третьей учетной записи). . Вот мои сериализаторы для большего понимания:

Код: Выделить всё

from .models import Information, Sites
from app.serializers import AccountsSerializer

class InformationSerializer(serializers.ModelSerializer):
class Meta:
model = Information
fields = ['name_of_data', 'data']

class SitesSerializer(serializers.ModelSerializer):
information = InformationSerializer(many=True, read_only=True)
account = AccountsSerializer(read_only=True)

class Meta:
model = Sites
fields = ['account', 'name', 'information']
Вот мое мнение по этому поводу:

Код: Выделить всё

class ProfileView(ListAPIView):
def list(self, request, *args, **kwargs):
self.check_object_permissions()
account_id = self.kwargs.get('account_id')
queryset = Sites.objects.filter(account_id=account_id)
serializer = SitesSerializer(queryset, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
Мне нужно ограничить доступ пользователей, используя следующее правило:
  • Пользователь, который является владельцем запрошенной учетной записи могу просмотреть информацию об аккаунте.
Но у меня всегда возникают ошибки и всегда разные ошибки.
В приведенном выше Разрешения кода вообще не проверяются и не работают.

Подробнее здесь: https://stackoverflow.com/questions/786 ... cts-in-drf

Вернуться в «Python»