我有两种模式:
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 :(得分:0)
一种可能的方法是在您的模板中隐藏帖子选择字段,然后列出所有帖子以及"添加图片"每个按钮。然后,您将通过单击将更新隐藏字段的按钮来调用JS函数,以选择与单击按钮对应的帖子。单击该按钮也可以使用JS提交表单,如果这是您之后的用户体验。
答案 1 :(得分:0)
好吧,只是鼓励它只与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>
不知道这是否是一种推荐方式,因为我是初学者,但接缝工作正常。希望它可以帮助其他人