自动将外键字段与pk对象django关联
我有两种型号:自动将外键字段与pk对象django关联,django,forms,django-views,Django,Forms,Django Views,我有两种型号: 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 model的视图,可以将图像附加到帖子中: def addimg(reques
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 model的视图,可以将图像附加到帖子中:
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})
到目前为止,我的表单中的图像字段当然是一个选择字段,我在其中选择希望与我的图像相关的帖子。我想要的是:我有一个每个帖子的详细视图,里面有一个按钮“添加图片”,我想知道是否可以请求我当前帖子的主键,并在没有字段的情况下自动将我的添加模型与这个主键关联。有什么建议吗?一种可能的方法是将帖子选择字段隐藏在模板中,然后列出所有帖子以及每个帖子的“添加图像”按钮。然后,通过单击按钮调用JS函数,该函数将更新隐藏字段,以选择与单击按钮对应的帖子。单击按钮还可以使用JS提交表单,如果您想要的是UX。好的,只需使用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>
{%csrf\u令牌%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{{form.as_p}}
拯救
我不知道这是否是一个推荐的方法,因为我是一个初学者,但我可以很好地工作。希望它能帮助其他人