我有两个与此类似的模型:
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_delete 或 post_delete signals .
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()
该实例是已从数据库中删除的服务器实例。
关于python - 如果一个对象未被另一个对象引用,如何删除该对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24627841/