Ожидается словарь, но есть str Django Rest Framework - PullRequest
0 голосов
/ 01 марта 2019

Сейчас я создаю пользовательский отдел со списком пользователей, которые являются внешним ключом к основной модели пользователя.У меня вчера это работало, но по какой-то причине я облажался.Я полагаю, это как-то связано с сериализаторами.Я хочу иметь возможность публиковать список пользователей в этом формате

['jack', 'tom']

Однако, даже используя API необработанных данных, это не позволяет мне сделать это.Вот мой код:

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

    class DepartmentSerializer(serializers.ModelSerializer):
    user_department = UserSerializer(many=True)
    class Meta:
        model = Departments
        fields = '__all__'
class DepartmentUpdateSerializer(serializers.ModelSerializer):
    user_department = UserSerializer(many=True)
    class Meta:
        model = Departments
        fields = ['department_name', 'department_head', 'user_department']

Клянусь, вчера он позволял мне выбирать из списка пользователей в API.Я мог также отправлять, и это работало бы от переднего конца.Однако теперь, когда я создаю отдел, он ожидает словарь, который я не пытаюсь пропустить.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Когда вы используете вложенный сериализатор, вам нужно добавить в поля также вложенное поле сериализатора (user_department), так как вы можете видеть, что вы использовали

fields = '__all__'

, которыйне включает ваше вложенное поле сериализатора, вам нужно вручную добавить это в мета поля

0 голосов
/ 01 марта 2019

Чувак, по какой-то причине, удаляя () после того, как UserSerializer исправил это.Если кто-нибудь может объяснить, почему это было бы еще лучше!

    class DepartmentSerializer(serializers.ModelSerializer):
    user_department = UserSerializer
    class Meta:
        model = Departments
        fields =['department_name', 'department_head', 'user_department']
class DepartmentUpdateSerializer(serializers.ModelSerializer):
    user_department = UserSerializer
    class Meta:
        model = Departments
        fields = ['department_name', 'department_head', 'user_department']
...