Python 如果一个对象未被另一个对象引用,如何删除该对象
我有两种类似的型号:Python 如果一个对象未被另一个对象引用,如何删除该对象,python,sql,django,Python,Sql,Django,我有两种类似的型号: class ContactDetails(Model): name = models.CharField() dept = models.CharField() class Server(Model): ip = models.GenericIPAddressField() hostname = models.CharField() contact = models.ForeignKey(Conta
class ContactDetails(Model):
name = models.CharField()
dept = models.CharField()
class Server(Model):
ip = models.GenericIPAddressField()
hostname = models.CharField()
contact = models.ForeignKey(ContactDetails)
一个ContactDetails
对象可能被许多服务器对象引用
删除服务器记录时,我还希望删除关联的ContactDetails记录
但前提是没有其他服务器记录引用该ContactDetails记录。在Django中这样做的最佳实践方式是什么?可能使用pre\u delete或post\u delete
该实例是已从数据库中删除的服务器实例。此外,是否有方法查看所有联系人对象并删除任何未被服务器对象引用的联系人对象?非常感谢。当然-每个ContactDetails都有一个反向设置返回到服务器,可能称为服务器设置。如果它是空的,就没有关系。我建议在Django文档中阅读所有这些内容。
from django.db import models
from django.dispatch import receiver
@receiver(models.signals.post_delete, sender=Server)
def delete_contact(sender, instance, **kwargs):
if not Server.objects.filter(contact=instance.contact):
instance.contact.delete()