2015-06-02 81 views
0

我有兩個型號:汽車涉及一個外鍵字段的PK對象的Django

class Post(models.Model): 
    title = models.CharField(max_length=200) 

class Addimg(models.Model): 

    post = models.ForeignKey('Post') 
    image = models.ImageField(upload_to='%Y/%m/%d') 

現在我有一個視圖Addimg模型追加圖像的帖子:

def addimg(request): 
    if request.method == "POST": 
     form = AddimgForm(request.POST, request.FILES) 
     if form.is_valid(): 
      addimg = form.save(commit=False) 
      addimg.image = request.FILES['image'] 
      addimg.save() 
      return redirect('blog.views.list') 
    else: 
     form = AddimgForm() 
    return render(request, 'blog/edit.html', {'form': form}) 

工作等等當然,我的表單中的圖像字段是一個選擇字段,我選擇我希望我的圖像與之相關的帖子。我想要的東西:我有每個帖子的詳細視圖,有一個按鈕「添加圖像」我不知道是否可以請求我當前的帖子的pk,並自動將我的Addimg模型與此pk沒有一個字段形成。有什麼建議麼?

回答

0

確定只是braught它只有Django的工作:

views.py

def addimg(request, pk): 
    post = get_object_or_404(Post, pk=pk) 
    if request.method == "POST": 
     form = AddimgForm(request.POST, request.FILES, initial={'post':post}) 
     if form.is_valid(): 
      addimg = form.save(commit=False) 
      addimg.image = request.FILES['image'] 
      addimg.save() 
      return redirect('blog.views.list') 
    else: 
     form = AddimgForm(initial={'post':post}) 
    return render(request, 'blog/appendimg.html', {'form': form }) 

forms.py

class AddimgForm(forms.ModelForm): 
    class Meta: 
     model = Addimg 
     fields = ('post', 'image',) 
     widgets = {'post': forms.HiddenInput()} 

模板形式:

<form enctype="multipart/form-data" method="POST" class="post-form">{% csrf_token %} 
    {% for hidden in form.hidden_fields %} 
    {{hidden}} 
    {% endfor %} 
    {{ form.as_p }} 
    <p><button type="submit" >Save</button></p> 
</form> 

別不知道這是不是一個推薦的窪因爲我是初學者,但接縫工作正常。希望它可以幫助別人

0

一種可能的方法是將帖子選擇字段隱藏在模板中,然後列出所有帖子以及每個帖子的「添加圖像」按鈕。然後,通過單擊將更新隱藏字段的按鈕來選擇與單擊的按鈕相對應的帖子,您可以調用JS函數。點擊按鈕也可以使用JS提交表單,如果這就是你之後的用戶體驗。