这是我在这个很棒的网站上发表的第一篇文章,我从中找到了一些具有挑战性的问题的答案。感谢社区!
我是 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 对象。
我的要求如下:
- 允许用户的单个网页 在上传时创建一个新项目 与项目关联的图像。单击页面上的“保存”按钮时,应在数据库中一起创建 Item 和 ItemImages 对象。
- 我在自定义配置文件中创建了一个名为 NUMBER_OF_IMAGES_PER_ITEM 的变量。系统基于此变量生成每个项目的图像字段数。
问题:
- 表格和模板应该是什么样的?是否可以使用ModelForm实现需求?
- 对于 View 函数,除了确保在 ItemImage 对象之前保存 Item 之外,我还需要注意什么?
请您参考如下方法:
考虑到您使用的是文件上传字段,我不确定它是否是 Web 应用程序的正确方法。如果项目名称验证失败怎么办?如果您再次重新显示表单,所有文件上传字段将变为空,用户必须再次填写。
关于技术方面 - ModelForm 将用于 Item 模型,但您还应该使用 ItemImage 的模型表单集。参见 http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view了解详情。
