Встроенное действие без экземпляра объекта в Django Admin - PullRequest
0 голосов
/ 30 сентября 2019

У меня проблемы с работой GenericTabularInline в моем приложении django.

Случай:

  • У меня есть какой-то объект с именем Status, который имеет отношениек некоторой собственности (ForeignKey). Я хотел бы иметь дополнительные действия над этим объектом состояния в форме изменения свойства.
  • Я использую библиотеку inline_actions для создания настраиваемых действий для объекта Status.
  • Проблема заключается в том, что я пытаюсь визуализировать этот экземпляр Inline, если к моему свойству не присоединен объект Status.

Можно ли как-то переопределить свои пользовательские действия для рендеринга, даже если к моему свойству не прикреплен объект Status?

Вот мой встроенный код:

class AbstractPropertyCheckInline(InlineActionsMixin, GenericTabularInline):

    model = Status
    readonly_fields = ('status_type', 'last_check', 'additional_message')
    extra = 0
    inline_actions = ['revalidate']

    def revalidate(self, request, obj, parent_obj=None):
      # My revalidation code

Что делает revalidate , так это то, что он создает объект Status и присоединяет его к свойству, если такового не существует. Я хотел бы вызвать такое поведение изнутри страницы администратора

1 Ответ

1 голос
/ 30 сентября 2019

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

Таким образом, вы, вероятно, должны подумать, какая часть действия относится к Property, а какая - к каждому Status экземпляру.

Затем разделите ваши действия: Одно на Property для созданияновый экземпляр Status, если у него нет одного и одного встроенного действия для каждого из ваших Status встроенных экземпляров для выполнения дополнительных действий с каждым дочерним элементом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...