Моделью Djoser Modelserializer является User.
Дочерний сериализатор, который я реализую, представляет собой другую модель, Customer.Так можно было бы сделать:
Код: Выделить всё
class CustomerSerializer(UserCreatePasswordRetypeSerializer):
class Meta:
model=Customer
fields = ('customer_name',)+UserCreatePasswordRetypeSerializer.Meta.fields
django жалуется, потому что в модели клиента нет полей модели, которые есть у пользователя.
это клиент модель, но эта модель в точности представляет эту модель.
Код: Выделить всё
class Customer(models.Model):
customer_name = models.CharField(max_length=255)
user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='user')
Код: Выделить всё
class Customer(User):
customer_name = models.CharField(max_length=255)
Поскольку Djoser — это приложение, я не могу изменить UserCreatePasswordRetypeSerializer в соответствии со своими потребностями.Я могу либо унаследовать это, либо
это второй подход, о котором я подумал.
создать что-то вроде,
Код: Выделить всё
class CustomerSerializer(serializers.ModelSerializer):
user=UserCreatePasswordRetypeSerializer
class Meta:
fields = ('customer_name','user')
проблема в том, как я могу вызвать создание UserCreatePasswordRetypeSerializer в метод create, который я реализую, потому что мне нужно использовать метод create UserCreatePasswordRetypeSerializer, поскольку он обрабатывает отправку электронных писем и все другие функции сериализатора. Поэтому я не могу просто извлечь проверенные данные пользователя и создать объект пользователя в методе создания CustomerSerializer следующим образом:
Код: Выделить всё
user_validated_data=validated_data.pop('user')
User.objects.create(**user_validated_data).
Опять же, я не могу его наследовать, потому что ребенок и родители представляют разные модели.
Подробнее здесь: https://stackoverflow.com/questions/786 ... rge-models