Внешний ключ пользователя Django Rest Framework - PullRequest
0 голосов
/ 08 февраля 2019

Я использую базового пользователя Django Auth для работы с пользователем, и у меня работает аутентификация.Сейчас я пытаюсь создать метод Post для моего Rest API, который автоматически получает пользователя из запроса, затем получает все вводимые данные и сохраняет их.

Я пробовал различные попытки сериализации.У меня также это работало как простой веб-сайт Django, но теперь все становится интереснее, превращая его в API.

Вот моя модель:

class UserIncome(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, 
                       on_delete=models.CASCADE)
    preTaxIncome = models.DecimalField(max_digits=15, decimal_places=2)
    savingsRate = models.DecimalField(max_digits=3, decimal_places=2)
    taxRate = models.DecimalField(max_digits=3, decimal_places=2)

Вот мой Serializer (Baseбез попыток создания внешнего ключа):

class UserIncomeSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.UserIncome
        fields = ('id', 'user', 'preTaxIncome', 'savingsRate', 'taxRate')

Вот представление (опять же, просто база. Нет попыток ввода внешнего ключа):

class UserIncomeList(APIView):
    #List all snippets, or create a new snippet.
    def get(self, request, format=None):
        userIncome = models.UserIncome.objects.get(user=request.user)
        serializer = Serializers.UserIncomeSerializer(userIncome, many=False)
        return Response(serializer.data)

    def post(self, request, format=None):
        serializer = Serializers.UserIncomeSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Должен ли я просто сделатьвнешний ключ, идентификатор пользователя и что получить как-нибудь?Спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Я разобрался!

Я удалил пользовательское поле из сериализатора, затем в методе post UserIncomeList я сделал метод сохранения:

serializer.save(user = request.user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...