У меня проблема с тем, что если я удаляю объект, другой объект удаляется, по-видимому, неправильно.
models.py
class Document(models.model):
file = models.FileField(upload_to=document_path, null=True, max_length=256)
ri_ct = models.ForeignKey(
ContentType, null=True, editable=False, related_name='documents_related_item', on_delete=models.PROTECT
)
ri_id = models.PositiveIntegerField(null=True, editable=False, db_index=True)
related_item = GenericForeignKey('ri_ct', 'ri_id')
class Invoice(models.model):
documents = GenericRelation(
Document, related_query_name='invoices', content_type_field='ri_ct', object_id_field='ri_id'
)
class BalanceUpdate(models.model):
related_item_ct = models.ForeignKey(
ContentType,
limit_choices_to=Q(app_label='main', model__in=('proformainvoice', 'invoice')),
related_name='balance_updates',
null=True,
on_delete=models.PROTECT,
)
related_item_id = models.PositiveIntegerField(null=True, blank=True, db_index=True)
related_item = GenericForeignKey(ct_field='related_item_ct', fk_field='related_item_id')
Теперь, если я делаю
Invoice.objects.filter(query).delete()
, я получаю BalanceUpdate, который связан с Invoice, также удаляется.
После значительной суммы отладки я обнаружил, что при удалении Invoice, документ удаляется ( правильно из-за определенного GenericRelation ).
Если мы посмотрим на Collector.collect , у нас есть рекурсивная функция, которая собирает объекты для удалено.
Если я вставлю сюда печать , когда моделью является Document, sub_ob js содержит объект BalanceUpdate. Как это может быть так? Документ обязательно должен иметь sub_ob js, содержащий BalanceUpdate, они, по-видимому, не связаны?
Заранее спасибо.