Django表单 - 每个模型的表单字段

时间:2014-01-18 17:52:31

标签: python django forms

我遇到了问题 - 我想添加一个简单的表单字段来编辑我在模板中循环的对象。这是我的模特:

class Topic(BaseModel):
name = models.TextField()

这是我的模特形式:

class TopicForm(forms.ModelForm):
class Meta:
    model = Topic
    fields = ["name"]

这是我的观点:

def App(request):
    tname = Topic.objects.get(pk=1)
    if request.method == "POST":
        form = TopicForm(data = request.POST, instance=tname)
        if form.is_valid():
            form.save()

我的模板很简单:

{% for lecture in lectures %}
<form action="/app/" method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value="Post">
</form>
{% endfor %}

问题是我希望有一个表单字段来编辑EACH模型而不仅仅是一个pk为1的模型...我该怎么做?

2 个答案:

答案 0 :(得分:1)

我认为您需要objects.all()代替get(pk=1)。然后遍历这些对象,并将它们保存到保存到上下文的列表中。像这样:

tnames = Topic.objects.all()
lectures = []
for tname in tnames:
  lectures.append(TopicForm(instance=tname))

context = { 
  'lectures' : lectures
}

答案 1 :(得分:0)

更具体地说,您可能希望查看模型表单集。见https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/#changing-the-queryset。然后,您可以直接将查询集作为初始数据。