问题描述
我需要一个支持 我正在尝试使用 inlineformset_fatory 它在模板中呈现并且(发布)表单被提交并保存......但表单集中的字段未保存
Forms.py
def updateFile():
global allCustom;
with open("CustomInfo.txt","w") as OutFile:
for c in allCustom:
OutFile.write(f"\nName:{c.name}\n")
OutFile.write(f"Birth Date:{c.date}\n")
OutFile.write(f"Address:{c.address}\n")
OutFile.write(f"HKID:{c.hkid}\n")
OutFile.write(f"Account value:{c.acc}\n")
Models.py
ImageFormSet = forms.modelformset_factory(ExtraPostimages,fields=('extra_images_image',),extra=3)
Views.py
class Post(models.Model):
title = models.CharField(max_length=150)
slug = models.SlugField(max_length=150,null=True,blank=True)
content = models.TextField()
class ExtraPostimages(models.Model):
extra_images_post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='extra_post_images')
extra_images_image = models.ImageField(upload_to=post_images_upload,blank=True)
Templates.html
class PostCreateView(LoginrequiredMixin,View):
template_name = "blog/Post_Create.html"
form_class = PostCreateForm
def get(self,request,*args,**kwargs):
Image_FormSet = ImageFormSet()
return render(request,self.template_name,{
"form": self.form_class,"ExtraFormSet": Image_FormSet,})
def post(self,**kwargs):
ExtraFormSet = ImageFormSet(self.request.POST or None,self.request.FILES or None)
form = self.form_class(request.POST,request.FILES)
if form.is_valid() and ExtraFormSet.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
form.save_m2m()
for f in ExtraFormSet:
try:
photos = ExtraPostimages(post=post,extra_images_image=f.clean_data['extra_images_image'])
photos.save()
except Exception as e:
break
messages.success(request,"Your post has been saved successfully.")
return redirect(reverse("detail-post",kwargs={"slug": post.slug}))
else:
ExtraFormSet = ImageFormSet(queryset=ExtraPostimages.objects.none())
form = PostCreateForm
messages.error(
request,"An error occurred when saving your post.Please try again")
return render(request,{
"form": form,"ExtraFormSet": ExtraFormSet,})
谁能帮忙,
提前致谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)