簡體   English   中英

如何從外鍵模型填充Django中的下拉列表

[英]how to populate dropdown list in Django from a foreignkey model

我有兩個型號。

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)

現在我必須渲染一個模板並保存文章模型的表單。 我的文章模型中有一個foreignKey字段,因此我無法保存我的文章形式。 我想從下拉列表中選擇一個類別並將其保存在我的文章模型中。

我應該如何為此編碼模板?

我的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

更換

<select id="id_category">
  {% for category in categories  %}
    <option value="{{ category }}">{{ category.category }}</option>
  {% endfor %}
</select>

{{ form.category }}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM