2008-11-22 29 views
4

J'utilise django 1.0 et j'ai créé mes modèles en utilisant l'exemple du livre de Django. Je suis capable d'effectuer la fonction de base de l'ajout de données; Maintenant, j'ai besoin d'un moyen de récupérer ces données, le charger dans un formulaire (change_form ?! ou quelque chose), EDIT et le sauvegarder dans la base de données. Deuxièmement comment puis-je SUPPRIMER les données contenues dans la base de données? c'est-à-dire rechercher, sélectionner puis supprimer!Comment modifier et supprimer des données dans Django?

S'il vous plaît montrez-moi un exemple du code que j'ai besoin d'écrire sur mon view.py et urls.py pour effectuer cette tâche.

Répondre

20

Disons que vous avez un employé modèle. Pour modifier une entrée avec clé primaire que vous faites emp_id:

emp = Employee.objects.get(pk = emp_id) 
emp.name = 'Somename' 
emp.save() 

pour le supprimer le faire:

emp.delete() 

donc une vue complète serait:

def update(request, id): 
    emp = Employee.objects.get(pk = id) 
    #you can do this for as many fields as you like 
    #here I asume you had a form with input like <input type="text" name="name"/> 
    #so it's basically like that for all form fields 
    emp.name = request.POST.get('name') 
    emp.save() 
    return HttpResponse('updated') 

def delete(request, id): 
    emp = Employee.objects.get(pk = id) 
    emp.delete() 
    return HttpResponse('deleted') 

En urls.py vous 'd besoin de deux entrées comme ceci:

(r'^delete/(\d+)/$','myproject.myapp.views.delete'), 
(r'^update/(\d+)/$','myproject.myapp.views.update'), 

I suggère de jeter un oeil à la docs

+2

Pour ceux qui viennent à cette question à ce stade: Plutôt que d'aller directement 'request.POST.get', vous voudrez certainement utiliser' is_valid() '. [Voir les docs de django sur la validation] (https://docs.djangoproject.com/fr/1.8/ref/forms/validation/) ... c'est très complet et très bien conçu. – eykanal

-4

Lire la suite: The Django admin site. Puis révisez votre question avec des détails spécifiques.

+2

ce sujet n'a rien à voir avec le site admin. il demande une méthode d'instance de modèle (supprimer). – israkir

+1

@israkir: Le site d'administration Django intégré permettra à une personne de supprimer des instances de modèle et d'éditer des données. C'est ce que ça fait. Le sujet dit "le charger dans un formulaire (change_form ?! ou quelque chose), l'éditer et le sauvegarder dans la base de données." C'est ce que fait le site d'administration. –

Questions connexes