Django-fr

Forum

#1 25-02-2011 15:25:10

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

question dico et boucle

Bonjour
j'ai une question plus python que django mais ça devrai répondre easy ;o)

je reçoit bout de request de ce type là

{"obj_id":"5","listmachin":[{"keyX":"valX","keyY":"valY","keyZ","valY"},{"keyX":"valX","keyY":"valY","keyZ","valY"},{"keyX":"valX","keyY":"valY","keyZ","valY"}]}

donc je json.loads ce bout

jsonparam['obj_id']  me renvoi bien 5 comme valeur

là ou je peche c'est pour lire mes trois objet machin  j'essai d'avoir un
machin0 machin1  machin2
peut etre vaut il mieux  un machin.X machin.Y machin.Z et sauveMachin Next ?


si ça parle a quelqu'un ?

tonton

Hors ligne

#2 25-02-2011 17:43:30

Bruno Bord
Membre
Inscription : 11-08-2010
Messages : 25

Re : question dico et boucle

> là ou je peche c'est pour lire mes trois objet machin  j'essai d'avoir un
> machin0 machin1  machin2
> peut etre vaut il mieux  un machin.X machin.Y machin.Z et sauveMachin Next ?

Voilà ce qui marche chez moi :

http://friendpaste.com/1HcXqekKbiTV7BH5vclB3k

Quel est le problème ?

Hors ligne

#3 28-02-2011 09:46:28

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : question dico et boucle

2011/2/25 Bruno Bord <mlbrunobord _AT_ gmail.com>
Voilà ce qui marche chez moi :

http://friendpaste.com/1HcXqekKbiTV7BH5vclB3k


Merci mais je ne connais pas le nombre de machin...
je ne peux pas  numeroter [0] pour le premier etc..

j'instancie dans chaque boucle un machin et le sauvegarde

machins = jsonparam['listmachin']
for truc in machins
    oneMachin=[ ]
    oneMachin.append(truc['X])
    oneMachin.append(truc['Y'])
    oneMachin.append(truc['Z'])
    nobj = Machin(id_X=oneMachin[0], oneMachin[1],oneMachin[2])
    nobj.save()

j'ai encore un souci car disont la valeur de Y est une clef etrangere du
coup le framework rale a la sauvegarde ..

T.

Hors ligne

#4 28-02-2011 10:07:49

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : question dico et boucle

Salut,

Pourquoi t'ennuies tu à faire à la volée une liste que tu n'utilises pas ?

N'est ce pas plus simple de faire :

machins = jsonparam['listmachin']
for truc in machins
    nobj = Machin(id_X=truc['X'], truc['Y'], truc['Z'])
    nobj.save()

Voire même explicitement utiliser les noms des attributs du modèle,
fonctionnellement ça ne change rien mais c'est toujours mieux d'être explicite
dans son code quand ça mange pas de pain :

machins = jsonparam['listmachin']
for truc in machins
    nobj = Machin(
        id_X=truc['X'],
        ton_attr_pour_Y=truc['Y'],
        ton_attr_pour_Z=truc['Z']
    )
    nobj.save()

> j'ai encore un souci car disont la valeur de Y est une clef etrangere du

Une clé étrangère ? Tu veux dire que l'attribut qui doit recevoir cette valeur
est une relation vers un objet (genre pour un foreignkey) ?

Si c'est ça, il te suffit de faire un :

monmodel.objets.get(ton_attr_pour_Y=truc['Y'])

.. dans ta boucle avant d'attribuer Y à ton nouvel objet à créer.

Attention tout de même, tu utilises des données JSON, ce ne sont pas des
données de confiances vu qu'elles n'ont probablement pas été validé par un
contrôleur, tu peux donc avoir des erreurs, voir des problèmes de sécurités
dans certains cas.

Le lundi 28 février 2011 09:46:28, Tonton a écrit :
> 2011/2/25 Bruno Bord <mlbrunobord _AT_ gmail.com>
> Voilà ce qui marche chez moi :
>
> http://friendpaste.com/1HcXqekKbiTV7BH5vclB3k
>
>
> Merci mais je ne connais pas le nombre de machin...
> je ne peux pas  numeroter [0] pour le premier etc..
>
> j'instancie dans chaque boucle un machin et le sauvegarde
>
> machins = jsonparam['listmachin']
> for truc in machins
>     oneMachin=[ ]
>     oneMachin.append(truc['X])
>     oneMachin.append(truc['Y'])
>     oneMachin.append(truc['Z'])
>     nobj = Machin(id_X=oneMachin[0], oneMachin[1],oneMachin[2])
>     nobj.save()
>
> j'ai encore un souci car disont la valeur de Y est une clef etrangere du
> coup le framework rale a la sauvegarde ..
>
> T.

Hors ligne

#5 28-02-2011 13:50:03

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : question dico et boucle

2011/2/28 David THENON <david.thenon _AT_ wanadoo.fr>

> Salut,
>
> Pourquoi t'ennuies tu à faire à la volée une liste que tu n'utilises pas ?
>
> Ok je me doutai que ce soit possible

Une clé étrangère ? Tu veux dire une foreignkey ;o)

monmodel.objets.get(ton_attr_pour_Y=truc['Y'])
> mon_att = get_object_or_404 (ModelY , idmonModelY = truc['Y'])

impec merci


> Attention tout de même,
>
>  vi un souci permanent la securité dans le web / les requetes pouvant etre
modifié et rejoué ainsi que les id de cession ...

mon objet ne se sauvegarde pas !
je n'ai pourtant pas de retour d'erreur
ou peut-on lire si il y as un souci pour ecrire dans la base  ?

T.

Hors ligne

#6 28-02-2011 14:01:18

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : question dico et boucle

au temps pour moi ! manque .save()

Hors ligne

Pied de page des forums