我有这些模型:
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
保存,然后修复外键。
这是添加Agency
和Gallery
的骨架视图。您可以轻松地同时添加一组图像。
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.