gpt4 book ai didi

django - 用于创建具有一对多关系的新对象的内联表单集?

转载 作者:行者123 更新时间:2023-12-04 06:03:50 27 4
gpt4 key购买 nike

模型.py:

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

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

使用上述定义的模型, ItemItemImage 有一对多的关系.我正在处理一个 django 表单,它使用户能够创建一个新的 Item例如,可以选择最多上传两个 ItemImage .请注意 Item和关联 ItemImage对象需要在同一阶段创建。

表单.py:
class ItemForm(ModelForm):
img_1 = fields.ImageField()
img_2 = fields.ImageField()

class Meta:
model = Item
fields = ('name', 'description', 'circles', 'location', 'rental_fee', 'rental_time_unit', 'deposit', 'rental_rules',)

再想一想,而不是将图像字段添加到 ItemForm ,我猜这可能是创建 ModelForm 的更好方法为 ItemImage并使用 内联表单集 .我从未使用过内联表单集,因此我对它的概念仍然很模糊。我想知道这是否是使用内联表单集的正确场景。

最佳答案

是的,这将是您使用 ModelFormSet 的非常典型的情况。 .

如果 img_1 和 img_2 是类 Item 的实际字段,则在 forms.py 中使用的方法将是合适的,但在处理一组相关模型时,ModelFormSet 是更好的选择。

考虑一下您希望允许用户使用三个图像而不是两个图像的 future 情况。使用 ModelFormSet,这将是一个字符代码更改。如果您想收集有关 ItemImage 类的辅助信息,这也将是一个微不足道的更改。

关于django - 用于创建具有一对多关系的新对象的内联表单集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com