2017-10-10 3 views
1

J'ai une classe simple:Django ne pas sérialiser id du modèle

class Item(models.Model): 
    name = models.CharField(max_length=250) 

je dois sérialisation à JSON avec l'ID dans le cadre du JSON, mais l'ID ne se sérialisé lorsque appelé la vue:

items_json = serializers.serialize('json', item_list) 

La liste item_list json reçue par le navigateur contient seulement le nom, pas l'ID. J'ai besoin de l'ID pour le traitement du côté client qui revient au serveur plus tard.

1) Je voudrais éviter de créer un autre ID si possible

2) Je ne l'ai pas créé une classe sérialiseur. Je ne suis pas sûr où et comment faire cela.

+0

Oui, il comprend la clé primaire. Vous devriez montrer le contenu de 'items_json' si vous êtes sûr que ce n'est pas le cas. –

+0

Je suis sûr que ce n'est pas parce que le json comme je le vois dans le navigateur ne le renvoie pas: {data: "[{" model ":" portal.item "," pk ": 1," champs ": {" nom ":" Test élément 1 "}}]", résultat: "succès", ...} données : "[{" model ":" portal.item "," pk ": 1, "fields": {"name": "Elément de test 1"}}] " not_permitted : " [{"model": "portal.item", "pk": 3, "fields": {"name" : "Secret"}}, {"model": "portal.item", "pk": 2, "fields": {"name": "Item Secret"}}] " résultat : " succès " – user8734958

+0

Mais je peux voir "pk": 1' etc dans cette sortie. –

Répondre

0

J'ai trouvé la solution. Le champ pk envoyé est l'identifiant. L'identifiant va maintenant apparaître dans les champs. Donc, en javascript, vous devriez faire:

$.each($.parseJSON(data), function(key, val) { 
    console.log("ID: " + val.pk) 
});