我想删除特定记录。如
delete from table_name where id = 1;
如何在django model
?
答案 0 :(得分:401)
有几种方法:
直接删除它:
SomeModel.objects.filter(id=id).delete()
要从实例中删除它:
instance = SomeModel.objects.get(id=id)
instance.delete()
答案 1 :(得分:19)
如果要删除一个实例,请编写代码
entry= Account.objects.get(id= 5)
entry.delete()
如果要删除所有实例,请编写代码
entries= Account.objects.all()
entries.delete()
答案 2 :(得分:12)
MyModel.objects.get(pk=1).delete()
如果具有指定主键的对象不存在,则会引发异常,因为它首先会尝试检索指定的对象。
MyModel.object.filter(pk=1).delete()
如果具有指定主键的对象不存在并且直接产生查询,则不会引发异常
DELETE FROM my_models where id=1
答案 3 :(得分:4)
Wolph提供了一个很好的答案集中代码。我可以在这里粘贴官方doc,供大家参考。
答案 4 :(得分:4)
延长投票最高的答案。
请注意,您应该将请求作为参数传递给视图中的删除函数。一个例子是:
from django.shortcuts import redirect
def delete(request, id):
YourModelName.objects.filter(id=id).delete()
return redirect('url_name')
答案 5 :(得分:3)
delete() 方法用于从数据库中删除模型实例。该方法立即删除对象。此方法返回删除的对象数。
示例:
**
**
data_to_be_deleted = Modelname.objects.get(fieldname = value)
data_to_be_deleted.delete()
由于 get 方法从查询集中返回单个对象,只会删除单个记录。如果提供的值不存在,这将引发错误。如果表中有多个记录具有相同的值,那么它也会引发错误,因此好的做法是在使用 get 时使用单个唯一值。
**
**
对于基于条件的删除过滤器方法用于查询集,然后调用删除。
data_to_be_deleted = Modelname.objects.filter(fieldname = value)
data_to_be_deleted.delete()
**
**
要从数据库表中删除所有模型实例/记录,您需要对所有模型调用 delete 方法
data_to_be_deleted = Modelname.objects.all()
data_to_be_deleted.delete()
注意:代码可以单行编写为 Modelname.objects.all().delete() 但为了清楚理解我使用了多行。
答案 6 :(得分:1)
如果您要删除一项
wishlist = Wishlist.objects.get(id = 20)
wishlist.delete()
例如,如果您要删除“收藏夹”中的所有项目
Wishlist.objects.all().delete()
答案 7 :(得分:0)
您可以直接从管理面板中删除对象,或者也可以通过键入 python3 manage.py shell(Linux 中的 python3)从交互式 shell 中删除特定或选定的 id 的选项。 如果您希望用户通过浏览器(带有提供的可视化界面)删除对象,例如对于数据库中 ID 为 6 的员工,我们可以使用以下代码实现这一点, emp = employee.objects.get(id=6).delete()
这将删除 ID 为 6 的员工。
如果您希望删除数据库中存在的所有员工而不是 get(),请按如下方式指定 all(): 员工.objects.all().delete()
答案 8 :(得分:0)
就像调用以下一样简单。
SomeModel.objects.get(pk=1).delete()
# Or
SomeModel.objects.filter(pk=1).delete()
# SQL equivalent
# delete from table_name where id = 1;
如果您想根据 id 删除多条记录,
使用 __in
查询 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,...);
如果要删除所有记录,请使用 .all()
检索所有查询,
然后.delete()
。
SomeModel.objects.all().delete()
# SQL equivalent
# delete from table_name;