Невозможно вставить сущность вместе с ее внешним ключом в 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 в браузере, я вижу следующее:

enter image description here

В POST-форме отсутствует поле для user_id. Разве оно не должно быть? Как я могу добавить устройство через запрос и указать, какому пользователю оно принадлежит? В таком виде в поле user просто ставится null, а это не то, что мне нужно. Я хочу указать устройству, к какому пользователю оно принадлежит при создании.

Вернуться на верх