Je souhaite créer une API permettant d'envoyer des requêtes JSON via une requête POST. Le JSON doit ensuite être transmis à un sérialiseur qui prend soin de créer un nouvel objet et de le remplir avec les données existantes.Framework Django REST - Relation OneToOne via JSON
Cela fonctionne très bien pour les cas «simples» tels que les entrées de caractères de base comme les noms d'utilisateur et similaires, mais je suis sérieusement bloqué quand il s'agit de créer une relation OneToOne. Voici l'exemple de code.
Fonction appelée employee_list
dans views.py
- data['account']
est un nom d'utilisateur valide, une instance de User
a été sélectionnée avec succès!
data = JSONParser().parse(request)
user_object = User.objects.get(username=data['account'])
data['account'] = user_object # this is now a valid User object
serializer = EmployeeSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)
Le modèle
class Employee(models.Model)
id = models.AutoField(primary_key=True)
name = models.CharField(...)
surname = models.CharField...
account = models.OneToOneField(User)
role = ...
salary = ...
picture = ...
Et le sérialiseur
class EmployeeSerializer(serializers.ModelSerializer):
class Meta:
model = Employee
fields = (...) # all fields of the `Employee` model
Jusqu'à présent, si bon, cependant, le sérialiseur ne valide! Lorsque je supprime le besoin d'une relation OneToOne, cela fonctionne.
Comment créer un nouvel objet Employee avec une relation OneToOne en cours de traitement avec un objet User?
Merci d'avance.
Quelle est l'erreur de validation? Vous pouvez passer raise_exception à l'intérieur: is_valid (raise_exception = True) – arjun27
Merci pour le conseil, je ne savais même pas que c'était possible. Cela m'a donné l'erreur exacte, j'ai été capable de le résoudre seul à cause de cela. Merci beaucoup! – fweidemann14