Python 模型和验证混乱-寻求建议
我对Python、Django有点陌生,我想了解一些关于如何布局我想编写的代码的建议 我已经编写了允许上传文件的模型。在modelsave方法中,我检查文件是否具有特定的扩展名。如果它有XML扩展名,我将打开文件并从文件中获取一些信息以保存在数据库中。我让这个模型工作。我已经在内置的管理中对其进行了测试。它起作用了 当前,当出现错误(不是XML文件;文件无法打开;特定属性不存在)时,我会抛出一个自定义“异常”错误。我想做的是如何将这些“异常”错误消息传递给视图(无论是自定义视图还是内置的管理视图),并显示一条错误消息,就像正在使用表单库一样。可能吗 我开始认为我必须使用表单库再次编写验证检查。如果是这样,是否仍可以使用内置的管理模板,但可以扩展用于添加这些自定义验证的表单 任何有助于我的困惑的事情都将不胜感激Python 模型和验证混乱-寻求建议,python,django,validation,Python,Django,Validation,我对Python、Django有点陌生,我想了解一些关于如何布局我想编写的代码的建议 我已经编写了允许上传文件的模型。在modelsave方法中,我检查文件是否具有特定的扩展名。如果它有XML扩展名,我将打开文件并从文件中获取一些信息以保存在数据库中。我让这个模型工作。我已经在内置的管理中对其进行了测试。它起作用了 当前,当出现错误(不是XML文件;文件无法打开;特定属性不存在)时,我会抛出一个自定义“异常”错误。我想做的是如何将这些“异常”错误消息传递给视图(无论是自定义视图还是内置的管理视图
更新: 这是我到目前为止的模型,对于那些提出疑问的人来说,“nzb”是XML文件字段。
管理界面将使用与模型关联的表单;您自己的视图也可以使用该表单 这正是我想做的。但是,我不知道如何将表单与模型关联起来。当我在过去创建表单时,它们总是充当自己的实体。在使用ModelForm类时,我无法让管理视图使用它们。你能解释一下吗 我读过你给我的链接,很遗憾我过去做过的事情,运气不好 从文件中获取属性可能是一种方法 对不起,你能详细说明一下吗?方法在哪里
更新: 我完全错过了将表单链接到管理视图的这一步。
现在我应该可以在表单中进行验证了。然而,我仍然对如何实际处理验证感到困惑。洛特说这应该是一种方法?表单错误自动成为管理视图的一部分 看 如果你在表单中进行验证,你会感到最快乐——这就是表单的用途。管理界面将使用与模型关联的表单;您自己的视图也可以使用该表单 从文件中获取属性可能是模型类的一个单独方法。模型类的独立方法可以由模型类的
save()
方法使用,也可以在其他时间由视图函数调用
“在使用ModelForm类时,我无法让管理视图使用它们。”
“我仍然对如何实际处理验证感到困惑。S.洛特说这应该是一种方法?” 表单中的验证使用
clean()
方法或clean\u somefield()
方法完成
“向管理员添加自定义验证”链接(如上)显示了如何将clean\u name
方法添加到“MyArticleAdminForm”表单中
如果您仍然感到困惑,请尝试从Django网页中实际键入代码,并查看其功能。表单错误自动成为管理视图的一部分 看 如果你在表单中进行验证,你会感到最快乐——这就是表单的用途。管理界面将使用与模型关联的表单;您自己的视图也可以使用该表单 从文件中获取属性可能是模型类的一个单独方法。模型类的独立方法可以由模型类的
save()
方法使用,也可以在其他时间由视图函数调用
“在使用ModelForm类时,我无法让管理视图使用它们。”
“我仍然对如何实际处理验证感到困惑。S.洛特说这应该是一种方法?” 表单中的验证使用
clean()
方法或clean\u somefield()
方法完成
“向管理员添加自定义验证”链接(如上)显示了如何将clean\u name
方法添加到“MyArticleAdminForm”表单中
如果您仍然感到困惑,请尝试从Django网页中实际键入代码,看看它能做什么。我想最好的方法是实现一个特殊的字段类,该类通过自定义上传文件的验证扩展
FileField
验证在字段的clean
方法中实现。如果遇到错误,它应该检查XML文件并引发ValidationError
s。然后,管理系统应该像处理任何其他字段错误一样处理您的自定义错误
ImageField类是这样的特殊验证的一个很好的例子-我推荐。我想最好的方法是实现一个特殊的field类,它通过自定义上传文件的验证来扩展
FileField
验证在字段的clean
方法中实现。如果遇到错误,它应该检查XML文件并引发ValidationError
s。然后,管理系统应该像处理任何其他字段错误一样处理您的自定义错误
ImageField类是这样的特殊验证的一个很好的例子-我推荐。您可以提供一个将由管理员站点使用的表单。然后,您可以在管理区域中显示的表单代码中执行验证
查看管理站点上的文档,尤其是。您可以提供一个管理站点将使用的表单。然后,您可以在管理区域中显示的表单代码中执行验证 看