Как сохранить экземпляр модели с помощью пользовательского APIView в Django REST API? - PullRequest
2 голосов
/ 11 мая 2019

Я занимаюсь разработкой веб-сайта на 2 серверах: Django (сзади), ReactJS (впереди);(Для удобства я изменил некоторые заголовки на абстрактные имена)

Модель:

class Model(model.Model):
    attr1 = models.CharField(max_length=500)
    attr1 = models.CharField(max_length=500)
    ....
    **author = models.ForeignKey(UserModel, on_delete=models.CASCADE)**

Пользовательский вид создания:

class ModelCreateAPI(APIView):
    def post(self, request):
        serializer = serializers.ModelSerializer(data=request.data)   
        if serializer.is_valid(raise_exception=True):
            model_saved = serializer.save()
        return Response({"success": "Model created successfully"})

Сериализатор:

class ModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = Model
        fields = '__all__'

В моем приложении React есть форма, которая отправляет HTTP-запрос, включая «токен пользователя», который хранится в localStorage.Однако «автор» модели должен быть целым числом, представляющим pk.Мне удалось преобразовать токен в pk:

>>> from rest_framework.authtoken.models import Token
>>> Token.objects.get(key='token').user_id

Это эффективный способ выполнения этой операции?Каковы ваши предложения?Как я могу реализовать HTTP POST-запрос таким образом, чтобы он сохранял модель с правильным author_id?

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