Перенаправление на разные страницы на основе результата запроса перед CreateView - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь реализовать механизм проверки (на основе данных в БД) перед перенаправлением CreateView на разные страницы.

В настоящее время, когда пользователь нажимает кнопку, это приводит к в форму:

панель инструментов. html:

{% url 'xxx_create' as xxx_create_url %}
<a href="{% url 'xxx_create' %}" class="btn btn-primary hidden-xs" role="button">
    <i class="fa fa-plus"></i>&nbsp;{% trans 'New XXX' %}</a>
<a href="{{ xxx_create_url }}" class="btn btn-primary visible-xs-inline" role="button">
    <i class="fa fa-plus"></i></a>

и есть настроенные. html но содержание на самом деле не имеет значения.

просмотров .py

class CustomizedCreateView(LoginRequiredMixin, ..., CreateView):
    form = CustomizedForm
    template_name = 'customized.html'

    def get_form_valid_message(self):
        msg = gettext('{title} created')
        return format_html(msg, title=self.object.title)

urls.py:

urlpatterns = [
    ...,
    url(r'^xxx/$',
        views.CustomizedCreateView.as_view(),
        name='xxx_create'),
    ...
]

То, что я пытаюсь реализовать, - когда пользователь нажимает кнопку, проверьте, соответствует ли отображенная строка (названная здесь foo) ) текущего пользователя в модели (здесь она называется Check) и равна предварительно определенной строке bar. Если совпадают, создайте вид, как указано выше. Если нет, перенаправьте на другую форму, а затем перенаправьте на исходную форму после отправки предыдущей (перенаправленной).

models.py

class Check(models.Model):
    user = models.ForeignKey(
        verbose_name=_('user'),
        to=settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    ) 
    foo = models.CharField(
        verbose_name=_('blah'),
        max_length=15
    )

Какая наилучшая практика для реализации такого рода функций? используя настроенный mixin? Любые подсказки или связанные примеры приветствуются. Спасибо!

...