【发布时间】:2011-01-12 23:36:38
【问题描述】:
我有以下型号:
class Listing(models.Model):
name = models.CharField(max_length=50, verbose_name="Title")
images = models.ManyToManyField('Image')
,ManyToManyField 链接到这个 Image 类:
class Image(models.Model):
thumb = ImageField(upload_to='images/uploads/')
number = models.PositiveSmallIntegerField()
以及对应的ModelForm,如下所示:
class ListingEditForm(ModelForm):
image1 = ImageField(required=False, label="Photo 1")
image2 = ImageField(required=False, label="Photo 2")
image3 = ImageField(required=False, label="Photo 3")
class Meta:
model = Listing
exclude = ('images')
想法是不限制后端可以与Listing关联的图像数量,但此时我只需要表单中的3张图像。上传图片可以正常工作,但是如何将表单绑定到 Listing 实例,以便在查看编辑表单时图片不是“无”?
显然,仅此一项是行不通的,因为 image1、image2 和 image3 只是表单字段,而不是模型的一部分:
form = forms.ListingEditForm(instance=listing)
所以添加字典作为第一个参数似乎是显而易见的事情:
form = forms.ListingEditForm({'image1': ...},instance=listing)
但是... 的值应该是多少?以及如何从Listing 实例中检索它?
【问题讨论】:
标签: django django-forms django-models