【问题标题】:Admin Form Validation管理员表单验证
【发布时间】:2009-05-27 09:53:48
【问题描述】:

我有一个包含多个订单 (SupplierOrder) 的供应商发票 (SupplierInvoice) 父模型。现在,如果用户通过 django admin 将发票放在一起,django 会检查成本价表中的供应商和产品是否存在价格匹配,并通过相应的字段进行拉取。此过程发生在自定义保存方法上。

我需要添加的是代码,以涵盖任何价格不匹配的情况,在这种情况下,验证应该启动并警告用户他们必须在提交之前在订单中输入一些内容。

我尝试了几种自定义 modelForm 'clean' 方法的变体,它们在 save 方法有机会查找价格并首先检查之前就开始了。

理想情况下,我想要 Django 检查价格匹配的适当表格,然后验证说没有匹配项,必须输入一个。

http://dpaste.com/hold/47848/对应的代码。

感谢您的帮助 - 我完全被难住了!

【问题讨论】:

  • FWIW,您在该 dpaste 的第 4 行有一个错字 - 我假设“保存时填充此字段 id”您的意思是“保存时填充此字段”
  • 感谢 Dominic - 是的,应该是这样 :)

标签: django django-models django-admin


【解决方案1】:

嗯,是的,clean 发生在保存之前 - 必须在保存之前检查表单是否有效。所以你需要在 clean 中进行价格查找。

【讨论】:

  • 如果您还想在模型层中保留价格查找行为(以防您在不使用表单的情况下保存该模型的实例),您可以将其重构为一个单独的方法从表单的 clean 方法调用,如果价格尚未设置,也从模型的 save() 方法调用。
  • Defo 是答案,但这种方法的成功参半。我在访问内联表单的父级变量时遇到了困难,该变量使价格查找完成了业务。我认为这是因为尚未保存父(发票),因此无法访问该变量。它存在于 request.post - 如何以干净的方法获取请求发布变量?谢谢
猜你喜欢
  • 1970-01-01
  • 2012-07-06
  • 2018-12-11
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2015-08-04
相关资源
最近更新 更多