Получение PK из другой таблицы, не являющейся пользователем - Django REST framework
Мне нужна помощь в решении следующей проблемы. Мне удалось подключить id пользователя к другой таблице, но я не могу воспроизвести тот же процесс при подключении таблицы к первичному ключу другой таблицы. Что я делаю не так?
МОДЕЛЬ
Родительская модель
class TestDataTwo(models.Model):
user = models.OneToOneField("auth.User", related_name="testdatatwo", on_delete=models.CASCADE)
test_name = models.CharField(max_length=1024, null=True, default="N/A")
Дочерняя модель
class TestDataThree(models.Model):
user = models.OneToOneField("auth.User", related_name="testdatathree", on_delete=models.CASCADE)
sdgdata = models.OneToOneField(TestDataTwo, related_name="testdatatwo", on_delete=models.CASCADE, default=-1)
test_name_again = models.CharField(max_length=1024, null=True, default="N/A")
СЕРИАЛИЗАТОР
Родительский сериализатор
class TestDataTwoSerializer(serializers.ModelSerializer):
class Meta:
model = TestDataTwo
fields = (
"id",
"user_id",
"test_name",
)
Детский сериализатор
class TestDataThreeSerializer(serializers.ModelSerializer):
class Meta:
model = TestDataThree
fields = (
"id",
"user_id",
"test_name_again",
)
VIEW
Родительский сериализатор
class TestDataTwoViewSet(ModelViewSet):
queryset = TestDataTwo.objects.all().order_by('id')
serializer_class = TestDataTwoSerializer
paginator = None
# CREATE NEW TESTDATATWO ROW FOR USER
def perform_create(self, serializer):
serializer.save(user=self.request.user)
# GET ALL ENTRIES OF TESTDATATWO FOR SPECIFIC USER, EXCEPT IF SUPERUSER, THEN RETURN ALL
def get_queryset(self):
# if self.request.user.is_superuser:
# return self.queryset
# else:
return self.queryset.filter(user=self.request.user)
# PUT/PATCH
def perform_update(self, serializer):
serializer.save(user=self.request.user)
return Response(serializer.data, status=status.HTTP_200_OK)
# DELETE TESTDATATWO ID
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
Детский сериализатор
class TestDataThreeViewSet(ModelViewSet):
queryset = TestDataThree.objects.all().order_by('id')
serializer_class = TestDataThreeSerializer
paginator = None
# CREATE NEW TESTDATATHREE ROW FOR USER
def perform_create(self, serializer):
serializer.save(user=self.request.user)
# GET ALL ENTRIES OF TESTDATATHREE FOR SPECIFIC USER, EXCEPT IF SUPERUSER (THEN RETURN ALL INSTEAD)
def get_queryset(self):
# if self.request.user.is_superuser:
# return self.queryset
# else:
return self.queryset.filter(user=self.request.user)
# DELETE TESTDATATHREE ID
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response("Deleted Successfully", status=status.HTTP_204_NO_CONTENT)
Я предполагаю, что мне нужно изменить что-то в классе views, но не уверен, что именно. Буду признателен за любую помощь.
Пример вывода в Postman: