2012-07-09 55 views
2

我不太確定如何標題這個問題,但我試圖用Django開發一個簡單的webapp。我想要做的是用戶將手動標記每個圖像,並且每個標記將具有特定圖像的外鍵(但每個圖像可以具有多個標記)。該索引頁應顯示實際圖像,但我還沒有想出這個出來呢...Django ModelForm在提交後獲得列表中的下一個項目

很多問題是,我不知道如何實現它,以便每頁,索引頁將顯示圖片標籤的圖片和框。用戶提交後,它將轉到下一個標記數最少的未標記圖像/圖像。現在,用戶可以提交一個標籤(並且數據寫入正確),但它仍然保持在同一圖像上。我是一個Python/Django的小白,所以請原諒我:P

下面是相關的源代碼:

forms.py:

class InputForm(forms.ModelForm): 
image = forms.ModelChoiceField(queryset=Image.objects.all(), 
    widget=forms.HiddenInput()) 

class Meta: 
    model = Tag 

models.py:

class Image(models.Model): 
image_location = models.CharField(max_length=200) 
num_tags = models.IntegerField(default=0) 
image_score = models.FloatField() 
def __unicode__(self): 
    return u'%d' % self.id 

class Tag(models.Model): 
image = models.ForeignKey(Image) 
tag_text = models.CharField(max_length=200, blank=True) 

def __unicode__(self): 
    return self.tag_text 

views.py:

def index(request): 
    if request.method == 'POST': 
      return HttpResponse(request.POST['image']) 

    image = Image.objects.all()[0] 
    form = InputForm(initial={'image': image}) 
    return render_to_response('imageSite/index.html', 
    { 
      'form':form, 
    }, 
    context_instance=RequestContext(request)) 

def submit(request): 
    form = InputForm(request.POST) 
    if(form.is_valid()): 
      image = form.cleaned_data['image']; 
      image.num_tags = image.num_tags + 1 
      image.save() 
      model = form.save() 
      model.save() 
      return redirect(index) 

i ndex.html:

<ul> 
<form action="/imageSite/submit/" method="post"> 
{%csrf_token %} 
<table> 
    {{ form.as_table }} 
</table>  
<input type="submit" value="Submit" /> 
</form> 
</ul> 

回答

1

代碼return redirect(index)將無法​​正常工作。您需要返回重定向響應,並在其中重定向到適當的URL。例如:

redirect_url = '/images/45/' 
return HttpResponseRedirect(redirect_url) 

請參閱this example在Django文檔中的完整示例。請注意,需要在您的視圖中計算出redirect_url的值:您需要使用最少數量的標記計算Image對象,並使用Django的reverse來乾淨地計算該對象的URL。如果表單無效,則不應執行重定向。

+0

感謝您的建議,但我想另一種方式來做到這一點;基本上我只是用最少量的標籤抓取QuerySet中的元素,並用表單顯示它。 – Raymond 2012-07-10 08:11:50

+0

@雷蒙德:很高興聽到你解決了這個問題! – 2012-07-10 08:13:05

相關問題