django - CreateView - 如何显示在下拉列表中选择的特定选项

art*_*t06 2 django django-templates

我有如下所示的模型。

class ProductGroup(models.Model):
    name = models.CharField(max_length=30,null=False, blank=False)
    category=TreeForeignKey('category.Category', null=False,blank=False)
Run Code Online (Sandbox Code Playgroud)

我有一个 CreateView 作为

class CreateProductGroup(CreateView):
    model = ProductGroup
    fields = ['name', 'category']
Run Code Online (Sandbox Code Playgroud)

我的这个视图的 url 模式是

url(r'^create-group/(?P<pk>[0-9]+)/$', views.CreateProductGroup.as_view(), name='create_group'),
Run Code Online (Sandbox Code Playgroud)

我通过 url 从 category_detail.html 页面传递 category_id 作为

<a href="{%url 'create_group' object.id %}">Create product group</a>
Run Code Online (Sandbox Code Playgroud)

这是我的表格

<form method="post">
        {% csrf_token %}
        {% bootstrap_form form %}
        {% buttons %}
            <button type="submit" class="btn btn-primary">
                Submit
            </button>

        {% endbuttons %}
    </form>
Run Code Online (Sandbox Code Playgroud)

现在,如何在表单中选择的 url 中显示与 id 对应的类别?

Dan*_*man 5

您可以定义get_initial()返回字典以预填充表单的方法;在该方法中,您可以从self.kwargs.

def get_initial(self):
    return {'category': self.kwargs['pk']}
Run Code Online (Sandbox Code Playgroud)

或者,如果始终在 URL 中提供类别 ID,您可能根本不希望在表单上显示类别字段;在这种情况下,请将其从字段列表中排除,并覆盖该form_valid方法以在保存时对其进行设置。

def form_valid(self, form):
    form.instance.category_id = self.kwargs['pk']
    return super(CreateProductGroup, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)

  • 您可以查看 [此处](http://ccbv.co.uk/projects/Django/1.11/django.views.generic.edit/CreateView/) 以查看您可以使用哪些方法和属性。 (2认同)