我使用Django 1.7.11和python 2.7。我有两个模型:
class Adv(models.Model):
title = models.CharField(max_length=255, blank=True)
description = models.TextField(blank=True)
class ImageFile(models.Model):
file = models.ImageField(upload_to=generate_imgname, max_length=50, blank=True)
adv = models.ForeignKey(Adv)
Adv的实例可以有10个图像文件。 ImageFile是内联管理员。我需要在模板中显示Adv的实例,其所有图像文件和图像文件必须与表单一起删除或偶然。 最好的方法是什么?我尝试了 inlineformset_factory ,但它只显示没有现有图像文件的文件输入表单。
答案 0 :(得分:2)
您尝试使用formset吗? https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/#model-formsets 试试这个。我还没有尝试过,但我在我的项目中做了类似的事情并且它有效。我希望它有所帮助。
forms.py
class AdvForm(ModelForm):
class Meta:
model = Adv
fields = ['title','description']
class ImageFileForm(ModelForm):
class Meta:
model = ImageFile
fields = ['file','adv']
在你的views.py中,
做一些事情,比如传递你的adv实例
def getAdv(request, adv_instance_id):
adv = get_object_or_404(Adv, pk = adv_instance_id)
ImgFileformSet = modelformset_factory(ImageFile, form = ImageFileForm)
if request.method == 'POST':
Adv = AdvForm(request.POST, instance=adv)
ImgFiles = ImgFileformSet (request.POST, queryset = ImageFile.objects.filter(adv=adv_instance_id), prefix='images', )
// your code
return render(request, 'yourtemplate', {'adv_instance_id','Adv','ImgFiles'})
并在模板中显示数据。