У меня есть 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]