summary
В Django, какой самый простой способ определить, есть ли какие-либо объекты в нашей базе данных, которые ссылаются на данный объект?
details
Учтите этоминимальный пример из справочника связанных объектов :
from django.db import models
class Reporter(models.Model):
pass
class Article(models.Model):
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
Как мы можем определить, есть ли какие-либо объекты, поэтому не только Article
объекты, которые указывают на данный Reporter
объект, через OneToOneField
, ForeignKey
или ManyToManyField
?
Другими словами, мы хотим определить, существуют ли какие-либо обратные отношения к данному объекту.
Для Article
это просто, мы можем просто получить, например,reporter.article_set.count()
, но позже могут быть добавлены другие модели, которые также указывают на Reporter
, и это также необходимо учитывать.
пример варианта использования
пример варианта использованияЗдесь мы хотим предотвратить изменение, как только на объект ссылается любой другой объект.Или мы могли бы использовать его для обеспечения поведения, подобного механизму on_delete=models.PROTECT
.