gpt4 book ai didi

django - 保存前更改表单实例 Django

转载 作者:行者123 更新时间:2023-12-05 04:18:43 25 4
gpt4 key购买 nike

我试图在保存之前更改表单的实例。我需要像这样在 View 中设置某些信息:

 class UploadedFile(models.Model):

file = models.FileField(storage=s3store, upload_to=custom_upload_to)
slug = models.SlugField(max_length=50, blank=True)
bucket = models.ForeignKey(S3Bucket, blank=False)
uploaded_by = models.ForeignKey(User, related_name='uploaded_by', blank=False)
company = models.ForeignKey(Company, blank=False)

--

class UploadForm(ModelForm):

class Meta:
model = UploadedFile

--

form = UploadForm(request.POST, request.FILES)
form.instance.company_id = r_user.company.id
form.instance.uploaded_by_id = r_user.id
form.instance.bucket_id = r_user.company.s3_bucket_id
if form.is_valid():
form_object = form.save()

现在,我知道表单无效,因为 company/uploaded/bucket 是空的:

错误表:

  • 公司
  • 此字段为必填项。
  • bucket
  • 此字段为必填项。
  • 上传者
  • 此字段是必需的。
  • 但我确实设置了它们!我是否需要让它们空白=True,然后保存(commit=false),更改它们,然后重新保存?如果是,为什么会这样?我确实更改了表格....

    最佳答案

    试试这个:

    data = request.POST.copy()
    data['company_id'] = r_user.company.id
    data['uploaded_by_id'] = r_user.id
    data['bucket_id'] = r_user.company.s3_bucket_id

    form = UploadForm(data, request.FILES)
    if form.is_valid():
    form_object = form.save()

    通过这种方式,您可以在创建表单之前设置数据。

    关于django - 保存前更改表单实例 Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723054/

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