首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用instance = instance创建时,表单域为空

使用instance = instance创建时,表单域为空
EN

Stack Overflow用户
提问于 2021-05-14 03:35:37
回答 1查看 40关注 0票数 1

我有两个型号:prodcut_pricesWrongPrice

WrongPrice中,用户可以纠正报告错误的价格-当报告价格时,它也应该在product_price中更新。

我的问题是,尽管我一开始就将product_price实例化为instance_productprice,但它的所有必填字段都会返回"this field to be filled“错误。当我使用实例instance_productprice = product_prices.objects.filter(id=pk)[0]时,为什么没有设置这些字段?请注意,product_prices中的所有字段都是非空的,因为它们是从product_price模型中拉出的,该模型是在另一个视图中处理的,因此这不是问题所在。

代码语言:javascript
复制
def wrong_price(request,pk):
     
    #Get the current price object
    instance_productprice = product_prices.objects.filter(id=pk)[0]
     
    #Get different values
    wrong_link = instance_productprice.link 
    img_url = instance_productprice.image_url 
    wrong_price = instance_productprice.last_price
    domain = instance_productprice.domain
        
    # Create instances
    instance_wrongprice = WrongPrice(
    link=wrong_link,
    correct_price=wrong_price,
    domain = domain)


    
    if request.method == "POST":
        form_wrong_price = wrong_price_form(request.POST,instance=instance_wrongprice)
        
        # Update values in product_prices
        form_product_price = product_prices_form(request.POST,instance=instance_productprice)
        form_product_price.instance.start_price = form_wrong_price.instance.correct_price
        form_product_price.instance.last_price = form_wrong_price.instance.correct_price

        
        if form_wrong_price.is_valid() & form_product_price.is_valid():
            form_wrong_price.save()
            form_product_price.save()
            
            messages.success(request, "Thanks")
            return redirect("my_page")
        else:
            messages.error(request, form_product_price.errors) # Throws empty-field errors, 
            messages.error(request, form_wrong_price.errors)
            return redirect("wrong-price", pk=pk)
    else:
        form_wrong_price = wrong_price_form(instance=instance_wrongprice)
        return render(request, "my_app/wrong_price.html",context={"form":form_wrong_price,"info":{"image_url":img_url}})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-14 04:03:26

我有点搞不懂你是怎么实现它的。您已经通过表单传递了一个WrongPrice价格的实例,这是不必要的,您可以使用initial

代码语言:javascript
复制
wrong_values = dict(
    link=wrong_link,
    correct_price=wrong_price,
    domain = domain
)

form_wrong_price = wrong_price_form(initial= wrong_values)

然后将form_wrong_price实例中的值添加到product_prices_form中。我不明白为什么你需要在这里再次使用表单。您可以简单地使用:

代码语言:javascript
复制
form_wrong_price = wrong_price_form(request.POST, initial= wrong_values)
if form_wrong_price.is_valid():
    instance = form_wrong_price.save()
    instance_productprice.start_price = instance.correct_price
    instance_productprice.last_price = instance.correct_price
    instance_productprice.save()

最后,请在定义类名时使用PascalCase。您可以通过product_prices.objects.get(id=pk)(而不是filter())获得产品价格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67525181

复制
相关文章

相似问题

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