Переопределение save_formset для заполнения строк в Django Admin - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть 1 ModelAdmin, который функционирует как основная форма, и 2 admin.TabularInlines, которые согласуются с ней.Я пытаюсь предварительно заполнить CleaningEntryInline данными, когда CleaningLog сохраняется через отношение «многие ко многим» через отдельную модель с именем RoomList.

Таким образом, я должен выбрать все записи с FK из моей модели CleaningAction и использовать это в качестве ссылки FK в EntryInline, но всякий раз, когда я пытаюсь сохранить его, выдает ошибку, но не дает обратной трассировки.Я дошел до того, что понял, что вам нужно переопределить метод save_formset (), но я не знаю, куда идти дальше.Любая помощь будет спасателем!

class CleaningActionAdmin(admin.ModelAdmin):
    list_display = ['room', 'action']
    list_filter = ['room']

class CleaningEntryInline(admin.TabularInline):
    model = CleaningEntry
    extra = 0
    autocomplete_fields = ['cleaning_item']

    fieldsets = [
        (None,{'fields':[('cleaning_item', 'checked', 'na', 'grade', 'notes')]})
    ]

class CleaningLogAdmin(admin.ModelAdmin):
    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        pre_instance = form.save(commit=False)
        get_actions = EquipmentAction.objects.filter(machine_action_id=pre_instance.cleaned_machine_id)
        # This is where I'm lost...
        for action in get_actions:
          new_action, is_new_action = CleaningEntry.objects.update_or_create(
              log_entry_id=pre_instance.id,
              cleaning_item_id=action.id
              )
          new_action.save()


        for obj in formset.deleted_objects:
          obj.delete()
        for instance in instances:
            instance.save()
        formset.save_m2m()

    def save_model(self, request, obj, form, change): 
        obj.auditor = request.user.username
        obj.save()

    ordering = ('-start_time',)
    list_display = ['room_cleaned', 'order_cleaned', 'start_time', 'clean_time','cleaning_users','auditor']
    list_filter = ['stop_time', 'room_cleaned']
    fieldsets = [
        ('Cleaning Info',{'fields':[('room_cleaned', 'order_cleaned')]}),   
        (None,{'fields':[('start_time')]}),
        (None,{'fields':[('clean_time','auditor')]})
    ]
    inlines = [CleaningUserInline, CleaningEntryInline]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...