python - 如何从外键模型填充 Django 中的下拉列表

标签 python django drop-down-menu foreign-keys

我有两个模型。

class ArticleCategory(models.Model):
    category = models.CharField(max_length=255,blank=False)

class Article(models.Model):
    title = models.CharField(max_length=255,blank=False)
    body = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey(ArticleCategory,default=1)

现在我必须渲染一个模板并保存文章模型的表单。我的文章模型中有一个外键字段,因此我无法保存我的文章表单。我想从下拉列表中选择一个类别并将其保存在我的文章模型中。

我应该如何为此编写我的模板?

我的views.py函数是:

def create(request):
    if request.POST:
        form = ArticleForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/articles/all/')
    else:
        form = ArticleForm()
        args={}
        args.update(csrf(request))
        args['categories'] = ArticleCategory.objects.all()
        args['form'] = form
        return render_to_response('create_article.html', args)

我的模板 create_article.html 目前看起来像这样:

<form role="form" action="/articles/create/" method="POST" enctype="multipart/form-data">{% csrf_token %}
                        <div class="row">
                            <div class="form-group col-lg-3">
                            <label></label>
                                <p>{{form.title}}</p>
                            </div>
                            <div class="form-group col-lg-3">
                                <label>Category</label>
                                <p>
                                    <select id="id_category">
                                        {% for category in categories  %}
                                        <option value="{{ category }}">{{ category.category }}</option>
                                        {% endfor %}
                                    </select>
                                </p>
                            </div>
                            <div class="clearfix"></div>
                            <div class="form-group col-lg-12">
                                <label>Body</label>
                                {{form.body}}
                            </div>
                            <div class="form-group col-lg-12">
                                <button type="submit" class="btn btn-default">Save Article</button>
                            </div>
                        </div>
                    </form>

最佳答案

您不需要手动执行此操作。如果您的 ArticleFormModelForm 并且不排除 category 字段,那么您只需编写 {{ form.category }} 并获取 django 自动创建的下拉列表。它在底层使用 ModelChoiceField

关于python - 如何从外键模型填充 Django 中的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675069/

相关文章:

jquery - 将 CSS 不透明度应用于下拉菜单

python - 验证任何语言的日期格式(法语、中文、土耳其语)

Python Pillow - ValueError : Decompressed Data Too Large

数据库插入命令中集合名称的 Python/Pymongo 变量

python - 在 Azure Web 应用程序中安装 psycopg2

CSS 菜单在 IE 中不起作用

java - 机器人框架 - 使用用户库

python - Django DATE_FORMAT 工作日名称

python - 我如何以 django 形式获取逗号分隔的 IP 地址?

javascript - 通过 Jquery 接收焦点时打开下拉菜单