django updateview表单相关模型



Mymodels.py文件为

class Post(models.Model):
title = models.CharField(max_length=256)
body = models.TextField()
category = models.ManyToManyField("PostCategory", blank=True)
class PostImages(models.Model):
image = models.ImageField(upload_to="..")
post = models.ForeignKey("Post", on_delete=models.CASCADE, related_name="images")

forms.py

class UpdateBlogForm(forms.ModelForm):
class Meta:
model = Post
fields = "__all__"
exclude = ("blogger", "view")
widgets = {
"language": forms.Select(attrs={"class": "form-control"}),
"title": forms.TextInput(attrs={"class": "form-control"}),
"body": forms.Textarea(attrs={"row": "25", "class": "form-control"}),
}

我有一个updateview

class BlogPostUpdateView(generic.UpdateView):
model = Post
form_class = UpdateBlogForm
success_url = "."
template_name = "blog/dashboard_components/blog_dashboard_eidtpost.html"
在<<p> strong> updateview 我只有我的UpdateBlogForm表单,任何方式编辑张贴相关图片(添加/删除)。知道怎么继续吗?!

我使用inlineformset_factory实现forms.py

...
from django.forms import inlineformset_factory
...
ImagesFormSet = inlineformset_factory(
Post,
PostImages,
fields=("image",),
extra=4,
max_num=4,
widgets={
"image": forms.FileInput(attrs={"class": "form-control col-md-4 col-sm-4 d-inline"}),
},
labels={
"image": "",
},
)

和在我的views.py发送ImagesFormSetget_context_data

from .forms import UpdateBlogForm, ImagesFormSet
...
class BlogUpdateView(generic.UpdateView):
model = Post
form_class = UpdateBlogForm
success_url = "."
template_name = "blog/dashboard_components/blog_dashboard_eidtpost.html"
def get_context_data(self, **kwargs):
context = super(BlogUpdateView, self).get_context_data(**kwargs)
context["images_form"] = ImagesFormSet(instance=get_object_or_404(Post, id=2))
return context

并最终访问ImagesFormSetimages_form

最新更新