Аккаунты
Код: Выделить всё
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
Код: Выделить всё
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