【发布时间】:2018-06-05 15:41:53
【问题描述】:
我有 2 个模型 Listing 和 Image,其中一个列表可以有多个图像。
class Listing(models.Model):
title = models.CharField(max_length=100, blank=False)
class ListingImage(models.Model):
listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name='images')
image = models.ImageField(blank=True)
理想情况下,我想在单个页面上创建此类列表,例如填写所有表单信息并在同一页面上添加图像。
这似乎是不可能的(如果可以的话,请告诉我,但请注意 dropzone.js 是 Ajax)用一个视图处理 2 个表单,我已经做了以下解决方法:
- 首先创建列表,添加第二步将列表添加到已创建 型号
- 创建一个占位符列表,向其中添加图像(通过 Ajax) 并在提交表单时更改占位符信息。
哪种方法更好?
views.py
def add_image(request):
# process images: problem we have no listing_instance to add them to
if request.method == 'POST':
form = ListingImageForm(request.POST, request.FILES)
if form.is_valid():
ListingImage.objects.create(pk=None, listing=listing_instance)
return HttpResponse(
json.dumps({
"result": True,
}),
content_type="application/json"
)
我正在寻找方法方面的建议。例如,要创建带有图像的列表,我需要先创建列表然后添加图像(2个步骤)还是先添加图像和列表信息?我的问题是,如果我这样做,当我使用 Ajax 添加图像时,列表尚未创建。
【问题讨论】:
-
单个视图中可以有 2 个表单。见:How can I build multiple submit buttons django form?
-
@ShivamSingh 问题在于处理第二个表单,因为它与第一个表单相关,在我们的案例中尚未创建
标签: python django dropzone.js