Skip to main content
 首页 » 编程设计

python之用于创建父对象及其关联子对象的单个页面

2025年05月04日8Leo_wl

这是我在这个很棒的网站上发表的第一篇文章,我从中找到了一些具有挑战性的问题的答案。感谢社区!

我是 Django 世界的新手,所以我希望能在这里得到一些 Django 专家的帮助。提前致谢。


元素型号:

class Item(models.Model): 
    name = models.CharField(max_length=50) 

ItemImage 模型:

class ItemImage(models.Model): 
    image = models.ImageField(upload_to=get_unique_filename) 
    item = models.ForeignKey(Item, related_name='images') 

从上面的模型定义可以看出,每个 Item 对象都可以有很多 ItemImage 对象。


我的要求如下:

  1. 允许用户的单个网页 在上传时创建一个新项目 与项目关联的图像。单击页面上的“保存”按钮时,应在数据库中一起创建 Item 和 ItemImages 对象。
  2. 我在自定义配置文件中创建了一个名为 NUMBER_OF_IMAGES_PER_ITEM 的变量。系统基于此变量生成每个项目的图像字段数。

问题:

  1. 表格和模板应该是什么样的?是否可以使用ModelForm实现需求?
  2. 对于 View 函数,除了确保在 ItemImage 对象之前保存 Item 之外,我还需要注意什么?

请您参考如下方法:

考虑到您使用的是文件上传字段,我不确定它是否是 Web 应用程序的正确方法。如果项目名称验证失败怎么办?如果您再次重新显示表单,所有文件上传字段将变为空,用户必须再次填写。

关于技术方面 - ModelForm 将用于 Item 模型,但您还应该使用 ItemImage 的模型表单集。参见 http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view了解详情。