'da seri hale getirici kullanan iç içe geçmiş nesnelerle nesneleri nasıl oluşturabilirim Bir bekçi oluşturmak istiyorum. Bu benim modelidir: Django REST
class Caretaker(models.Model):
user = models.OneToOneField(User)
language = models.ForeignKey('Translation', blank=True, null=True, on_delete=models.SET_NULL, verbose_name=_('language'))
patients = models.ManyToManyField('Patient', through='CaretakerPatient')
specialists = models.ManyToManyField('Caretaker', through='CaretakerSpecialist')
name = models.CharField(_('name'), max_length=50)
email = models.CharField(_('e-mail'), max_length=100)
time_zone = models.CharField(_('time zone'), max_length=50)
is_primary = models.BooleanField(default=False)
active = models.BooleanField(default=True)
Eğer django.contrib.auth.models.User bir ilişki oneTOone var Gördüğünüz gibi
.Benim API görünümü
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
class CaretakerSerializer(serializers.ModelSerializer):
user = UserSerializer()
language = serializers.SlugRelatedField(slug_field='language_code', read_only=True)
time_zone = serializers.StringRelatedField()
class Meta:
model = Caretaker
fields = ('id', 'user', 'language', 'name', 'email', 'time_zone', 'active')
def create(self, validated_data):
print validated_data
user = User(
email=validated_data['email'],
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
caretaker = Caretaker.objects.create(**validated_data)
return caretaker
Sorum şu ... şu
@csrf_exempt
@api_view(['POST'])
@renderer_classes((CustomJSONRenderer,))
def create_user(request):
serializer = CaretakerSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
return Response(serializer.errors, status=400)
Benim serileştiricisi sınıfları:
{ 'kullanıcı adı': 'xxx' gibi veri göndermeyi , 'Parola': 'xxx', 'email': '[email protected]', 'name': 'John Smith' ... }
Kullanıcıyı oluşturmak için kullanıcı adı ve parolayı nasıl bölebilirim ve sonra bu nesneyi bekçi oluşturmak için kullanabilir miyim? Validated_data, bana sadece bakıcı modelinin alanlarını verdi. Eğer iç içe bir kullanıcı serileştirici kullanıyor gibi