У меня следующая проблема, у меня есть модель пользователя по умолчанию и модель профиля. Я хочу объединить их в один сериализатор, но без вложенности - это просто безобразно. Вместо этого я хочу, чтобы все их поля были на первом уровне. Поэтому я создал следующее (для простоты профиль содержит только одно поле Bool и одно поле отношения):
class UserSerializer(serializers.ModelSerializer):
achievements = serializers.PrimaryKeyRelated(many=True, queryset=Achievements.objects.all())
trusted = serializers.BooleanField()
def create(self, validated_data):
user=User.objects.create_user(
password = validated_data['password'],
username = validated_data['username'],
email = validated_data['email'],
)
Profile.objects.update_or_create(user, defaults={
'trusted': validated_data['trusted'],
'achievements': validatd_data['achievements'],
}
)
return user
class Meta:
model = User
fields = ("id", "username", "email", "password", "trusted", "achievements"),
read_only = ("id",)
extra_kwargs = {
'password': {
'write_only': True,
},
}
Профиль подключен к пользователю через поле пользователя, содержащее models.OneToOneField
экземпляр.
Когда я пытаюсь составить список всех профилей, я получаю сообщение об ошибке, которое мне нужно указать source
, но я понятия не имею, как и в документации упоминается только то, что следует использовать точечную запись.
Спасибо.