我有以下型號:在模板中包含來自不同模型的ModelForm的最佳方式是什麼?
class Picture(models.Model):
title = models.CharField(max_length=255)
(etc)
而且
class Report(models.Model):
complaint = models.TextField()
picture = models.ForeignKey('Picture')
我想什麼,能夠做的是一個 )包括在「圖片」模型視圖模板 B中報告的ModelForm )預先填充報告中的圖片字段Modelform與相關圖片
我一直在使用上下文處理器,包括標籤,並試圖通過查詢來傳遞變量打開一個新的頁面,但他們都似乎很複雜,不能正常工作。
我想要幫助的是理解最「django」的方式來做到這一點,以及任何指針來完成這件事。
解決方案
與斯科特的幫助下,工作的解決方案是:
views.py
def picture(request, slug):
picture = Picture.objects.get(slug=str(slug))
d = dict(picture=picture, form=ReportPicture())
d.update(csrf(request))
if request.method == 'POST':
form = ReportPicture(request.POST)
if form.is_valid():
report = form.save(commit=False)
report.picture = picture
report.save()
return redirect(picture.get_absolute_url())
return render_to_response("picture_detail.html", d)
擴展您的CBV'get_context_data','form_valid'和'POST'方法。這將需要一些修補,但最後它會像魅力一樣工作:D –