没有用户输入的Django CreateView定义字段

时间:2016-07-03 00:05:02

标签: django

假设我有一个CreateArticleView,如下所示CreateView

class CreateArticleView(CreateView):
    model = ArticleModel
    fields = ['title', 'text']

ArticleModel实际上有 3 字段;它也有category

category是一个网址参数,因为网址遵循以下正则表达式:127.0.0.1/category/(?P<category>[0-z]+)/articles/new/

我需要一些方法来从URL中获取category(SO用户已经回答了这个问题)以及某种方式然后将这些数据放入我的ArticleModel实例中(这没有)。

例如,假设用户想要创建一个名为“ArticleModel”的title文本,“哇!”

我会从POST(或GET)数据中获取textArticleModel,并可以使用article = ArticleModel.objects.create(title=title_from_POST, text=text_from_POST)将其插入category。但是,我还需要为ArticleModel提供<?php // Get the url of the browser $url = isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : ""; // Get the 7-digit number $number = strpos($url, "=")>0 ? substr($url, strpos($url, "=")+1, strlen($url)) : ""; // Add the 7-digit number to a new link and return it return $link = "wwww.referece.com/?ref=" . $number; ?> kwarg。我该如何插入?

请注意:我没有建立人们可以发布文章的网站。上面的代码完全是例如。我正在寻找的是将URL变量提供给基于类的函数的一些方法。

1 个答案:

答案 0 :(得分:0)

您可以使用self.kwargs字典覆盖form_valid方法并访问url参数。

示例:

class CreateArticleView(CreateView):
    model = ArticleModel
    fields = ['title', 'text']

    def form_valid(self, form):
        self.kwargs['category'] # Access the category or any other url parameters

        return super(CreateArticleView, self).form_valid(form)

来源:https://docs.djangoproject.com/ja/1.9/topics/class-based-views/generic-editing/