Невозможно вставить сущность вместе с ее внешним ключом в django/djangorestframework
В моем приложении есть следующие модели:
class User(models.Model):
name = models.CharField(max_length=100)
birth_date = models.DateField()
address = models.CharField(max_length=200)
class Device(models.Model):
description = models.CharField(max_length=200)
location = models.CharField(max_length=200)
max_energy_consumption = models.FloatField()
avg_energy_consuumption = models.FloatField()
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
У пользователя может быть несколько устройств, отсюда внешний ключ user в классе Device. Вот мои сериализаторы:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
class DeviceSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)
class Meta:
model = Device
fields = '__all__'
Я использую стандартный ModelViewSet для CRUD-операций:
class UserViewSet(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
class DeviceViewSet(ModelViewSet):
queryset = Device.objects.all()
serializer_class = DeviceSerializer
В моей базе данных в таблице устройств есть столбец user_id, как и должно быть. Когда я открываю Django API в браузере, я вижу следующее:
В POST-форме отсутствует поле для user_id. Разве оно не должно быть? Как я могу добавить устройство через запрос и указать, какому пользователю оно принадлежит? В таком виде в поле user просто ставится null, а это не то, что мне нужно. Я хочу указать устройству, к какому пользователю оно принадлежит при создании.