Я пытаюсь реализовать механизм проверки (на основе данных в БД) перед перенаправлением 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> {% 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
? Любые подсказки или связанные примеры приветствуются. Спасибо!