J'essaie d'exposer une API à mon modèle Django à travers le cadre de repos Django.
J'ai un objet si je comprends, c'est une relation unique. P> J'ai maintenant une vue d'API: < / p> et le sérialisateur correspondant: p> Que dois-je faire pour pouvoir poster une observation avec plusieurs choses détectée? Je ne peux pas comprendre. Merci beaucoup. P> P> Observation code>. Une observation peut contenir plusieurs choses qui ont été observées. Donc, je l'ai représenté comme ceci: p>
3 Réponses :
thing = models.ManyToManyField('Thing') you need to use many to many relationship for creating a temporary table that will store the keys and associate data automatically.
Merci, mais ma table intermédiaire est le observé code> un. Le
BalentTomanAnfield code> ne fonctionne que si vous n'avez aucune autre information attachée à la relation. Ce que je peux faire, c'est avoir
chose = modèles.manytomanfield (chose, via = 'Observez-vous') code>, mais cela ne résout toujours pas mon problème d'origine.
(Réponse plus ou moins copiée d'un autre Question similaire mais moins claire )
Pour créer plusieurs objets associés dans un seul post nécessite Serializers imbriqués en écriture em> qui ne sont pas encore disponibles. P> Le support est un Travailler en cours , mais dans le temps moyen ( hacky) solution consiste à remplacer la méthode probablement pas idéal, mais cela fonctionne pour moi jusqu'à ce que le bon chemin vient. p> L'autre option consiste à créer les objets d'observation code> d'observation associés de code> individuellement avec des messages séparés et d'utiliser Primarykeyrelatedfield ou hyperlinkedRélatedfield Pour rendre les associations dans la finale créer code> dans la vue dans chaque cas: p>
Observez-la code> poste. p> p>
Aha, c'est ce que je cherchais. Merci beaucoup, réponse acceptée.
Je sais que ce fil a déjà une réponse, mais j'ai commencé à travailler pour résoudre ce problème et que ce poste était l'une de mes inspirations, je voudrais partager ma solution finale. Cela peut être utile à quelqu'un. J'ai les modèles, donc la classe des parents: puis, la classe enfant: p> Je devais définir les sérialistes, car Je ne voulais pas créer une URL accessible au routeur pour gérer directement des objets pour enfants, mais je voulais les créer via le modèleViewset de la société mère de modèle, c'est ce dont j'avais besoin: p> router = routers.DefaultRouter()
router.register(r'parents', ParentViewSet)
Merci pour la réponse, mais vous utilisez un Modelviewset CODE> ici, je pense que cela aurait été plus frais lorsque vous avez utilisé une vue générique code>.