首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确上传图像以形成?

如何正确上传图像以形成?
EN

Stack Overflow用户
提问于 2022-05-12 17:27:38
回答 1查看 82关注 0票数 0

这是我与表单关联的代码:

模型

代码语言:javascript
复制
class Date(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
    place = models.ForeignKey('Place', on_delete=models.CASCADE, null=True)
    title = models.CharField(max_length=64, null=True)


class Photo(models.Model):
    date = models.ForeignKey('Date', on_delete=models.CASCADE)
    image = models.ImageField(verbose_name='Photos', upload_to='media/date/photos/')

# form

class DateForm(forms.ModelForm):
    image = forms.ImageField()
    class Meta:
        model = Date
        exclude = ('user',)

# view

class CreateDateView(LoginRequiredMixin, CreateView):
    template_name = 'app/date/form.html'
    form_class = DateForm

    def form_valid(self, form):
        form.instance.user = self.request.user
        form.save() # by the way why do I save this form? Is it okay to save it in 
form_valid method?
        photos = self.request.FILES.getlist('image')
        for photo in photos:
            Photo.objects.create(image=photo)
        return super().form_valid(form)

问题是,如果照片对象需要日期模型id,则如何保存它。它引发NULL约束失败:据我所知,app_photo.date_id必须编写如下内容:

Photo.objects.create(date=date_from_the_form, image=photo)

但是如何从日期模型中得到pk呢?希望你能理解我的问题,如果有任何问题,请在下面的评论部分写下来。提前感谢!

错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-12 17:35:32

当您调用form.save()时,它返回模型实例,这样您就可以像下面这样从它获得实例

代码语言:javascript
复制
def form_valid(self, form):
    form.instance.user = self.request.user
    date_instance = form.save() 
    photos = self.request.FILES.getlist('image')
    for photo in photos:
       Photo.objects.create(date=date_instance, image=photo)
    return super().form_valid(form)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72219867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档