Я использую Django версию 3 и Rest Framework, у меня есть модель с иностранным ключом пользователя.
, поэтому каждый раз, когда модель сохраняется, пользователь также должен быть сохранен.
Чтобы иметь возможность чтобы добавить или отредактировать модель с помощью rest, вам необходимо пройти аутентификацию с использованием токена.
Я использую ClassBasedViews, проблема в том, что я не могу найти способ добавить модель, потому что в моем сериализаторе полевой пользователь исключен, потому что я не хочу, чтобы он был редактируемым.
models.py:
class Chambre(models.Model):
local_id=models.PositiveIntegerField(unique=True)
nom=models.CharField(max_length=255)
user=models.ForeignKey(User,on_delete=models.CASCADE,blank='true')
class Meta:
unique_together = ('local_id', 'user',)
serializers.py:
class ChambreSerializer(serializers.ModelSerializer):
class Meta:
model = Chambre
exclude =['user',]
views.py:
class ChambreListApi(APIView):
"""
List all chambres, or create a new chambre.
"""
authentication_classes=(TokenAuthentication,)
permission_classes=(IsAuthenticated,)
def get(self, request, format=None):
chambres = Chambre.objects.filter(user=request.user)
serializer = ChambreSerializer(chambres, many=True)
return Response(serializer.data)
def post(self, request, format=None):
serializer = ChambreSerializer(data=request.data)
if serializer.is_valid():
serializer.save(commit=False)
serializer.user=request.user
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)