在 Django 管理中添加一个对象及其相关对象以相同的形式



我有这些模型:

class Gallery(models.Model):
   HeadImage = models.ImageField(upload_to="gallery") 
class Image(models.Model):
   Image = models.ImageField(upload_to="gallery")
   Gallery = models.ForeignKey(Gallery, related_name='images',blank=True)
class Agency(models.Model):
   # some fields ...
   Gallery=models.ForeignKey(Gallery)

现在我想,当添加一个代理,而不是仅仅显示一个愚蠢的组合框画廊字段,我有这些东西:

Gallery模型中HeadImage字段的文件上传和一组文件上传为Image模型中Image场。比如在一个形式中添加一个对象(代理)和它的相关对象(代理相关的画廊和画廊相关的图像)。我该怎么做呢?在谷歌上搜索了很多之后,我没有找到任何解决方案,这听起来是个可怕的问题。

编辑:我的意思是保存一个画廊和它的一组图像,并保存代理与它的画廊在相同的形式。

感谢您的帮助

正如我在上面的评论中所说的,你试图在Django管理中做太多的事情。

看看你的另一个问题,你熟悉编写自己的视图所需的工具。为您的模型定义模型表单。将它们放在模板中相同的表单标签中。如果表单有效,使用commit=False保存,然后修复外键。

这是添加AgencyGallery的骨架视图。您可以轻松地同时添加一组图像。

def add_agency(request):
    if request.method == "POST":
        agency_form = AgencyForm(data=request.POST, prefix="agency")
        gallery_form = GalleryForm(data=request.POST, prefix="gallery")
        if agency_form.is_valid() and gallery_form.is_valid():
            gallery = gallery_form.save()
            agency = agency_form.save(commit=False)
            agency.gallery = gallery
            agency.save()
            return HttpResponseRedirect(next_url)
    else:
        # left as an exercise

如果您想要一个两步表单,我建议您查看formwizard。它是Django <=1.3的一个独立应用。>=1.4.

最新更新