2014-01-18 41 views
2

我遇到了一個問題 - 我想添加一個簡單的表單域來編輯我在模板中循環的對象。這裏是我的模型:Django表單 - 每個模型的表單字段

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 %} 

事情是我想要一個表單域來編輯每個月德爾不只是一個PK的1 ...我該怎麼做?

+0

你應該修復你的縮進 – bozdoz

+0

縮進是好的,我只是搞砸了這個帖子.. :) – Eimantas

回答

1

我認爲你需要做objects.all()而不是get(pk=1)。然後遍歷這些對象,並將它們保存到您保存到上下文的列表中。類似這樣的:

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

context = { 
    'lectures' : lectures 
} 
+0

謝謝你。你拯救了我的一天。 – JazZ

0

更具體地說,你可能想看看模型表單集。請參閱https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/#changing-the-queryset。然後你可以直接給一個查詢集作爲初始數據。

+0

你好。對不起,我剛纔回答..但有沒有辦法在模型formset的表單上循環時添加額外的數據?因爲我在for循環中列出了我的對象,並且模型formset也使用了for循環。我試圖實現的是使用for循環列出所有對象,併爲每個對象添加一個表單來編輯它。看起來很簡單。對象的數量是未知的,用戶將能夠動態地添加它們。 – Eimantas