822👍
There are a couple of ways:
To delete it directly:
SomeModel.objects.filter(id=id).delete()
To delete it from an instance:
instance = SomeModel.objects.get(id=id)
instance.delete()
86👍
MyModel.objects.get(pk=1).delete()
this will raise exception if the object with specified primary key doesn’t exist because at first it tries to retrieve the specified object.
MyModel.objects.filter(pk=1).delete()
this wont raise exception if the object with specified primary key doesn’t exist and it directly produces the query
DELETE FROM my_models where id=1
- [Django]-Celery discover tasks in files with other filenames
- [Django]-How to assign items inside a Model object with Django?
- [Django]-Malformed Packet: Django admin nested form can't submit, connection was reset
30👍
if you want to delete one instance then write the code
entry= Account.objects.get(id= 5)
entry.delete()
if you want to delete all instance then write the code
entries= Account.objects.all()
entries.delete()
- [Django]-How do I install psycopg2 for Python 3.x?
- [Django]-Django Multiple Authentication Backend for one project
- [Django]-How to get username from Django Rest Framework JWT token
19👍
If you want to delete one item
wishlist = Wishlist.objects.get(id = 20)
wishlist.delete()
If you want to delete all items in Wishlist for example
Wishlist.objects.all().delete()
- [Django]-Itertools.groupby in a django template
- [Django]-How to get superuser details in Django?
- [Django]-Django: Safely Remove Old Migrations?
10👍
Extending the top voted answer by wolph
Note that you should pass request as a parameter to your delete function in your views. An example would be like:
from django.shortcuts import redirect
def delete(request, id):
YourModelName.objects.filter(id=id).delete()
return redirect('url_name')
- [Django]-How to completely dump the data for Django-CMS
- [Django]-Resource temporarily unavailable using uwsgi + nginx
- [Django]-How to debug in Django, the good way?
9👍
The delete()
method is used to delete model instances from a database.This method immediately deletes the object. this method returns the number of object deleted.
Example:
For deleting one record:
data_to_be_deleted = Modelname.objects.get(fieldname = value)
data_to_be_deleted.delete()
As get method returns a single object from queryset only single record will be deleted.If value supplied doesn’t exist this will throw an error.If there are multilpe records in table for same value then also it will throw an error so good practice is to use a single unique value while using get.
For deleting multiple record according to a condition:
For condition based deletion filter method is used on queryset and then delete is called.
data_to_be_deleted = Modelname.objects.filter(fieldname = value)
data_to_be_deleted.delete()
For deleting all records:
For deletion of all model instances/records from database table you need to call delete method on all
data_to_be_deleted = Modelname.objects.all()
data_to_be_deleted.delete()
Note: code can be written in single line as Modelname.objects.all().delete()
, but for clear understanding, I have used multiple lines.
- [Django]-Set up a scheduled job?
- [Django]-Constructing Django filter queries dynamically with args and kwargs
- [Django]-Folder Structure for Python Django-REST-framework and Angularjs
4👍
You can also use get_object_or_404()
, rather than directly using get()
as while using get() we explicitly raise the error of 404.
But, while using get_object_or_404
it is automatically done.
get_object_or_404
According to 4.0 docs, Calls get() on a given model manager, but it raises Http404 instead of the model’s DoesNotExist exception.
Use it like:
For bulk deletion:
AnyModel.objects.filter(id=id).delete()
For deleting single instance, use get_object_or_404()
instead of get()
in the following way:
instance=get_object_or_404(anyModel,id=id)
instance.delete()
If, not found raises 404 automatically.
- [Django]-Where is a good place to work on accounts/profile in Django with the Django registration app?
- [Django]-How to use pdb.set_trace() in a Django unittest?
- [Django]-How to run own daemon processes with Django?
2👍
It is as simple as calling the following.
SomeModel.objects.get(pk=1).delete()
# Or
SomeModel.objects.filter(pk=1).delete()
# SQL equivalent
# delete from table_name where id = 1;
In case you want to remove multiple records based on id,
use the __in
query lookup
SomeModel.objects.fitler(pk__in=[1,2,3,4,5,...]).delete()
# SQL equivalent
# delete from table_name where id in (1,2,4,5,...);
In case you want to delete all records, use .all()
to retrieve all queries,
then .delete()
.
SomeModel.objects.all().delete()
# SQL equivalent
# delete from table_name;
- [Django]-Cross domain at axios
- [Django]-Serving Media files during deployment in django 1.8
- [Django]-Speeding up Django Testing
1👍
The way I do it:
instance = SomeModel.objects.get(id=1)
instance.delete()
For me it looks easy to understand, that’s why I use this approach.
- [Django]-Django staticfiles not found on Heroku (with whitenoise)
- [Django]-How to use subquery in django?
- [Django]-Get count of related model efficiently in Django
0👍
you can delete the objects directly from the admin panel or else there is also an option to delete specific or selected id from an interactive shell by typing in python3 manage.py shell (python3 in Linux).
If you want the user to delete the objects through the browser (with provided visual interface) e.g. of an employee whose ID is 6 from the database, we can achieve this with the following code,
emp = employee.objects.get(id=6).delete()
THIS WILL DELETE THE EMPLOYEE WITH THE ID is 6.
If you wish to delete the all of the employees exist in the DB instead of get(), specify all() as follows:
employee.objects.all().delete()
- [Django]-Are Django SECRET_KEY's per instance or per app?
- [Django]-Warning: Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'
- [Django]-Resource temporarily unavailable using uwsgi + nginx