Ошибка метода сериализации - PullRequest
0 голосов
/ 28 июня 2018

Здравствуйте, у меня есть модель Brand и модель BrandEditor, которая используется в качестве маски для сбора всех личных брендов компании. Я хочу добавить Brand в BrandEditor пользователя, который создает экземпляр бренда, и, если BrandEditor отсутствует, сначала создайте его. Есть код:

class BrandAddSerializer(serializers.ModelSerializer):
    editor = serializers.SerializerMethodField('create_editor')

    class Meta:
        model = Brand
        fields = ('id', 'editor', 'name', 'image', 'description')

    def create_editor(self):
        if BrandEditor.objects.filter(owner__user=CurrentUserDefault).exists():
            editor = BrandEditor.objects.filter(owner__user=CurrentUserDefault)
            return editor
        else:
            company = Company.objects.filter(user=CurrentUserDefault)
            BrandEditor.objects.create(owner=company)
            editor = BrandEditor.objects.filter(owner__user=CurrentUserDefault)
            return editor

Я ловлю create_editor() takes 1 positional argument but 2 were given, что я делаю не так? Спасибо!

1 Ответ

0 голосов
/ 28 июня 2018

Метод, связанный с SerializerMethodField, принимает объект в качестве второго аргумента. Поэтому вам нужно определить это так:

def create_editor(self, obj):

UPD

Также CurrentUserDefault - это класс, используемый для предоставления значения по умолчанию для поля сериализатора. Чтобы получить метод текущего пользователя внутри, вы можете использовать его вместо этого ( связанная часть документов):

user = self.context['request'].user
company = Company.objects.filter(user=user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...