Я пытаюсь создать функцию обновления для одного из моих сериализаторов, который представляет Company
, где некоторые люди (пользователи моего приложения) admin
.Однако, когда я обращаюсь к Postman с просьбой обновить объект Company, кажется, что мой сериализатор не получает все данные i PUT
в моем API.
Я пытался использовать полный сериализатор пользовательских объектов всериализатор моей компании, но в этом случае я должен указать данные, которые мне не нужны, и они даже не работают.
Когда я PUT
название моей компании выглядит так:
{
"id": 1,
"admins": [
5,
6,
7,
9,
11
],
"name": "Mon entreprise"
}
Мой API отвечает на это (пользователи с идентификаторами 6 и 11 были добавлены с помощью панели администратора):
{
"name": "Mon entreprise",
"logo": "http://localhost:8000/api/companies/1/mwe.jpg",
"admins": [
6,
11
]
}
Я попробовал это, чтобы увидеть, какие данные были переданы через API
def update(self, instance, validated_data):
print (validated_data)
и вывод был:
{'name': "Mon entreprise"}
Мой сериализатор:
class CompanySerializer(serializers.ModelSerializer):
admins = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Company
fields = ('name', 'logo', 'admins',)
def update(self, instance, validated_data):
print (validated_data)
instance.logo = validated_data.get('logo', instance.logo)
instance.name = validated_data.get('name', instance.name)
instance.save()
admin_list = validated_data.get('admins')
print (admin_list)
return instance
моя модель:
class Company(models.Model):
admins = models.ManyToManyField(User, related_name='admins')
logo = models.ImageField(blank=True)
name = models.CharField(max_length=200)
Я не понимаю, почему у меня только {'name': "Mon entreprise"}
как я добавил admins
поле в моем JSON для PUT
запроса