Django UpdateView допускает, только если поля объектов удовлетворяют определенным условиям

Я получил эту проблему после копирования файла таблицы mytable.idb из другого места. Чтобы устранить эту проблему, я сделал следующее:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Скопировать файл mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Перезапустить MySql

0
задан Ralf 13 July 2018 в 18:35
поделиться

1 ответ

Я все равно оставил форму в InvoiceUpdateView; вместо перенаправления по запросу GET я теперь показываю только предупреждающее сообщение вместе с формой. Я предотвращаю обновление экземпляра Invoice в запросах POST.

class InvoiceUpdateView(PermissionRequiredMixin, UpdateView):
    permission_required = ...
    template_name = ...
    model = Invoice
    fields = ...

    @cached_property
    def can_be_modified(self):
        # fetch from DB
        start_date = ...
        end_date = ...

        if start_date <= self.object.date <= end_date:
            return True
        return False

    def form_valid(self, form):
        if not self.can_be_modified:
            messages.error(self.request, 'date is not in range')
            return redirect('invoice-detail')

        return super().form_valid(form)

    def get_context_data(self, **kwargs):
        ctx = super().get_context_data(**kwargs)

        if not self.can_be_modified:
            messages.error(self.request, 'date is not in range')

        return ctx

Это не самое изящное решение, но оно достаточно для моего случая.

0
ответ дан Ralf 17 August 2018 в 12:15
поделиться
Другие вопросы по тегам:

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