Boh*_*ohr 14 django django-admin
在Django的/ admin /部分中,您可以选择删除项目.
如果任何相关对象将与您选择的对象一起删除,您可以在确认删除之前查看受影响对象的列表.
我可以通过编程方式在我自己的函数中检查吗?
我想做点什么
for item in Item.objects.all():
if not deletion_would_also_delete_other_objects(item):
item.delete()
Run Code Online (Sandbox Code Playgroud)
Tar*_*req 20
您可以使用django.db.models.deletion导入收集器来执行此操作吗?
from django.db.models.deletion import Collector
from .models import Item
for item in Item.objects.all():
collector = Collector({})
collector.collect([item])
# dependencies should be an empty dict if the item is not related to anything
if not collector.dependencies:
item.delete()
Run Code Online (Sandbox Code Playgroud)
ram*_*win 12
我建议使用NestedObjects
django admin 中提供的 util。
from django.contrib.admin.utils import NestedObjects
from django.db import router
using = router.db_for_write(Item._meta.model)
# if you only have one database, just set using = "default"
nested_object = NestedObjects(using)
nested_object.collect([Item])
# If you want to delete multi item, you can use:
# nested_object.collect(Model.objects.filter(type="deleted"))
print(nested_object.nested()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3445 次 |
最近记录: |