0

J'ai un élément dans une liste. Je veux cliquer sur quelque chose et que ce clic déclenche une vue. Cette vue met à jour l'état de cet élément de liste dans la base de données.Mettre à jour un enregistrement db dans DJANGO sans avoir à utiliser un formulaire? EXEMPLE: Cliquez pour terminer MISES À JOUR un enregistrement

Par exemple, ajouter au panier ou enregistrer la date ou terminé. Dans chaque cas, cliquer sur ce lien met à jour l'enregistrement db avec un nouveau statut. En ce moment, ce ne sont que des champs booléens.

Vous pouvez voir où cela se passe. Une URL liée à cette vue sera appelée avec Ajax. Mais j'essaie de le faire avec une dégradation gracieuse. Je sais comment faire la partie Ajax, mais pas la partie mise à jour de DB.

Je n'ai jamais fait beaucoup plus que la forme de base.is_valid et form.save. Donc je suis un peu perdu.

Idées bienvenues.

Merci

Répondre

0

Quelque chose comme:

def some_view(request, *args, **kwargs): 
    my_obj = MyModel.object.filter(pk=kwargs['id']) 
    if my_obj: 
     my_obj = my_obj[0] 
     my_obj.fancy_status = "someone wants to buy me!" 
     my_obj.save() 
    return some_appropriate_response() 

avec un motif d'URL comme

(r'^/my_objects/(?P<id>\d{1,9})/buy/$', some_view) 

semble être ce que vous cherchez, non?

Fondamentalement, vous pouvez enregistrer des instances de vos modèles comme vous pourriez le penser.

+0

my_obj.fancy_status = "quelqu'un veut m'acheter!" peuplerait le champ obj.fancy_status avec "quelqu'un veut m'acheter!" - Est-ce exact? –

+0

Exactement. Excepté, eh bien, j'étais stupide, donc dans ce que j'avais à l'origine c'est un ensemble de requêtes au lieu d'une instance de modèle. Corriger le code pour qu'il fonctionne comme prévu (c'est-à-dire, comment vous décrivez). – desfido