464 votes

Comment supprimer un enregistrement dans les modèles Django ?

Je veux supprimer un enregistrement particulier. Par exemple

delete from table_name where id = 1;

Comment puis-je faire cela dans un modèle django ?

8voto

Ashish Nautiyal Points 196

Le site delete() La méthode est utilisée pour supprimer les instances de modèle d'une base de données. cette méthode supprime immédiatement l'objet. cette méthode renvoie le nombre d'objets supprimés.

Ejemplo:

Pour la suppression d'un enregistrement :

data_to_be_deleted = Modelname.objects.get(fieldname = value)
data_to_be_deleted.delete()

Comme la méthode get renvoie un seul objet de queryset seulement un seul enregistrement sera supprimé.si la valeur fournie n'existe pas cela va jeter une erreur.s'il ya plusieurs enregistrements dans la table pour la même valeur alors aussi il va jeter une erreur de bonne pratique est d'utiliser une seule valeur unique tout en utilisant get.

Pour supprimer plusieurs enregistrements en fonction d'une condition :

Pour la suppression basée sur des conditions, la méthode de filtrage est utilisée sur le queryset et ensuite la suppression est appelée.

data_to_be_deleted = Modelname.objects.filter(fieldname = value)
data_to_be_deleted.delete()

Pour effacer tous les enregistrements :

Pour supprimer toutes les instances de modèle/les enregistrements de la table de la base de données, vous devez appeler la méthode delete sur toutes les instances de modèle.

data_to_be_deleted = Modelname.objects.all()
data_to_be_deleted.delete()

Note : le code peut être écrit en une seule ligne comme suit Modelname.objects.all().delete() mais pour une bonne compréhension, j'ai utilisé plusieurs lignes.

2voto

Radwan Abu-Odeh Points 1549

Il suffit d'appeler le numéro suivant.

SomeModel.objects.get(pk=1).delete()
# Or
SomeModel.objects.filter(pk=1).delete()

# SQL equivalent
# delete from table_name where id = 1;

Dans le cas où vous voulez supprimer plusieurs enregistrements basés sur l'id, utilisez la fonction __in requête recherche

SomeModel.objects.fitler(pk__in=[1,2,3,4,5,...]).delete()

# SQL equivalent
# delete from table_name where id in (1,2,4,5,...);

Dans le cas où vous voulez supprimer tous les enregistrements, utilisez .all() pour récupérer toutes les requêtes, puis .delete() .

SomeModel.objects.all().delete()

# SQL equivalent
# delete from table_name;

1voto

lionel Points 35

La façon dont je le fais :

instance = SomeModel.objects.get(id=1)

instance.delete()

Pour moi, cela semble facile à comprendre, c'est pourquoi j'utilise cette approche.

0voto

Vous pouvez supprimer les objets directement à partir du panneau d'administration ou bien il y a aussi une option pour supprimer un identifiant spécifique ou sélectionné à partir d'un shell interactif en tapant dans le shell python3 manage.py (python3 sous Linux). Si vous souhaitez que l'utilisateur supprime les objets via le navigateur (avec l'interface visuelle fournie), par exemple un employé dont l'ID est 6 dans la base de données, nous pouvons le faire avec le code suivant, emp = employee.objects.get(id=6).delete()

Cela supprimera l'employé dont l'ID est 6.

Si vous souhaitez supprimer tous les employés existant dans la base de données au lieu de get(), spécifiez all() comme suit : employee.objects.all().delete()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X