Django CreateView: как создать ресурс перед рендерингом формы - PullRequest
0 голосов
/ 03 мая 2020

У меня есть класс модели для моего ресурса,

class Article(db.Model):
    title = models.CharField(_('title'), max_length=255, blank=False)
    slug = AutoSlugField(_('slug'), populate_from='title')
    description = models.TextField(_('description'), blank=True, null=True)
    content = RichTextUploadingField()

Вот мой класс формы

class ArticleForm(ModelForm):
    class Meta:
        model = kb_models.Article

И, наконец, мой CreateView,

class CreateArticleView(generic.CreateView):
    form_class = ArticleForm
    model = Article

    def get_success_url(self):
       return "some_redirect_url"

Прямо сейчас Я настроил свои URL, как показано ниже:

path('add/', CreateArticleView.as_view(), name='create_article')
path('<slug:article>', ArticleDetailView.as_view(), name='article_detail'),
path('<slug:article>/update', UpdateArticleView.as_view(), name='update_article')

Текущий поток будет отображать форму при достижении конечной точки ресурса add/ и сохранять ресурс в базе данных только после отправки формы. После этого к статье можно получить доступ, используя слаг, сгенерированный из заголовка.

Вместо этого я хочу создать ресурс Article до его рендеринга, чтобы конечная точка add/ перенаправляла на какая-то конечная точка add/unique-uuid, и даже когда форма не отправлена ​​из браузера, этот пустой ресурс сохраняется, и к нему можно получить доступ позже из-за unique-uuid.

Я думал о создании экземпляра объекта и перенаправить его в UpdateView, но у меня возникают трудности с выяснением того, как отслеживать unique-uuid и указывать и генерируемые-uuid и slug на один и тот же ресурс. Кроме того, это похоже на обычный вариант использования, поэтому мне интересно, есть ли лучший стандартный способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...