2016-04-29 46 views
0

我使用Django 1.7.11和python 2.7。我有兩種型號:Django。在模板中使用現有模型實例的內聯窗體集

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) 

Instance of Adv可以有10個圖像文件。 ImageFile在管理中內聯。我需要在模板中顯示Adv的實例,它的所有圖像文件和圖像文件必須與表單刪除或機會。 做什麼是最好的方法?我嘗試了inlineformset_factory,但它只顯示沒有現有圖像文件的文件輸入形式。

回答

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

做這樣的事情通過你的進階

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'}) 

的實例,並在你的模板中顯示的數據。

+0

非常感謝您的回答! – Swallow

相關問題