Я пытаюсь переопределить метод удаления для модели с именем Invoice. Модель-фактура ссылается на ForeignKey в действии модели. Я хочу, чтобы обновить BooleanField по имени счет в модели администратора, когда это счет-фактура будет удаленПереопределить delete_selected() и поля обновления дочерней модели
решение, описанное в этой статье:
How do I override delete() on a model and have it still work with related deletes
, что ответить: https://stackoverflow.com/a/1539182
не работает для меня например,
def delete(self):
Action.objects.filter(invoice=self).update(billed=False) # and tried 0 instead of False
super(Invoice,self).delete()
также пытался:
def delete(self):
actions = Action.objects.filter(invoice=self)
for action in actions:
action.billed=False # and tried 0 instead of False
action.save()
super(Invoice,self).delete()
Поле ForeignKey в Model Action имеет параметр on_delete = models.SET_NULL, чтобы избежать удаления действий при удалении счета-фактуры. Но мне также нужно вернуть счет False.
invoice = models.ForeignKey(Invoice, verbose_name = 'Rechnung', null=True, blank=True,on_delete=models.SET_NULL)
Я только что прочитал здесь https://code.djangoproject.com/ticket/10751 что в администраторе действия удалять выбранный не может быть overridde со стиранием()
Я должен использовать delete_view() вместо
Так что я попытался
def delete_selected(self, request, obj, extra_context=None):
Action.objects.filter(invoice=self).update(billed=False)
super(InvoiceAdmin, self).delete_view(request, obj, extra_context)
Также попытался использовать obj вместо self, но не решение
Когда вы говорите «не работает», что вы имеете в виду, являются ли объекты действия не обновляемыми или объекты-объекты не удаляются или оба? Вы ошиблись? – scoopseven
Счета-фактуры обновляются (удаляются), но ничего не происходит с действиями. Действие delete() или delete_selected() не было переопределено. Теперь он работает с get_actions и del deleted_selected и передает, чем произвольное действие delete_model для модели. – surfi