То, как делают я переопределяю, удаляют () на модели и имеют его, все еще работают со связанным, удаляет

HMODULE является HINSTANCE, базовый адрес модуля. Так, я видел бы, как это работало. Но если все, что Вы хотите, является HMODULE исполняемого файла, почему бы не перечислить весь HMODULE's в процессе (EnumProcessModules). Одному из них свяжут Ваш .lib в.

ограничение, которое я вижу, - то, что Вы понятия не имеете, из которого DLL или EXE прибывает Ваш .lib. Вы могли бы хотеть сравнить HMODULEs (базовые адреса) с _ReturnAddress, который Вы получаете от своего .lib. Ваш .lib будет принадлежать самому высокому меньшему HMODLUE, чем Ваш _ReturnAddress

23
задан orokusaki 15 May 2013 в 14:23
поделиться

5 ответов

Я разобрался. Я просто поместил это в эту модель виджета:

def delete(self):
    files = WidgetFile.objects.filter(widget=self)
    if files:
        for file in files:
            file.delete()
    super(Widget, self).delete()

Это запустило необходимый метод delete () для каждого из связанных объектов, тем самым запустив мой собственный код удаления файла. Да, это более дорогая база данных, но когда вы все равно пытаетесь удалить файлы на жестком диске, это не такие уж большие расходы, чтобы потратить несколько дополнительных раз на БД.

33
ответ дан 29 November 2019 в 00:39
поделиться

Использование clear () перед удалением удаляет все объекты из набора связанных объектов.

см. django-following-Relations-backward

пример:

group.link_set.clear() 
group.delete() 
2
ответ дан 29 November 2019 в 00:39
поделиться

Чтобы найти способ обойти эту проблему: предварительное удаление сигнала . (Это никоим образом не означает, что реального решения нет.)

1
ответ дан 29 November 2019 в 00:39
поделиться

Является ли some_widget_instance и экземпляром виджета или WidgetFile ? Потому что, если это экземпляр Widget , он не получит вашу пользовательскую функцию delete () , которая находится в классе WidgetFile .

0
ответ дан 29 November 2019 в 00:39
поделиться

Это кажется полным смыслом только в том случае, если один виджет точно подключен к одному файлу WidgetFile. В этом случае вам следует использовать OneToOneField

из Однозначные примеры:

# Delete the restaurant; the waiter should also be removed
>>> r = Restaurant.objects.get(pk=1)
>>> r.delete()
1
ответ дан 29 November 2019 в 00:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: