gpt4 book ai didi

django - 如何将图像绑定(bind)到 Django 中的编辑表单?

转载 作者:行者123 更新时间:2023-12-04 21:25:09 27 4
gpt4 key购买 nike

我有以下模型:

class Listing(models.Model):
name = models.CharField(max_length=50, verbose_name="Title")
images = models.ManyToManyField('Image')

, 与 ManyToManyField链接到这个 Image类(class):
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 张图片。上传图片可以正常工作,但是您将如何将表单绑定(bind)到 Listing实例以便在查看编辑表单时图像不是“无”?

显然,仅此一项是行不通的,因为 image1 , image2image3只是表单字段,而不是模型的一部分:
form = forms.ListingEditForm(instance=listing)

因此,添加字典作为第一个参数似乎是显而易见的事情:
form = forms.ListingEditForm({'image1': ...},instance=listing)

但是 ... 的值应该是多少?是?以及如何从 Listing 中检索它实例?

最佳答案

我会回答我自己的问题,即使这不是我想要的答案。我环顾四周,据我所知,在 HTML 中没有可靠的方法来更改文件输入字段的内容。所以,我可能是错的,但即使您在请求中发送该信息,Django 也无法在该字段中显示该信息(因为它与本地 PC 上的文件不对应)。

因此,我的解决方案只是将图像的 url 与请求一起发送,就像通常那样:

return render_to_response('edit.html', {'image1': image1_url, ...})

然后,如果存在此信息,我使用 jQuery 将图像放置在模板中的文件输入字段旁边,并在用户选择新文件时更新它。这不是最好的,但它有效。

我仍然很高兴听到任何其他解决方案。

关于django - 如何将图像绑定(bind)到 Django 中的编辑表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675287/

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