Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自模型管理器创建方法的Django验证异常_Python_Django_Validation_Django Models - Fatal编程技术网

Python 来自模型管理器创建方法的Django验证异常

Python 来自模型管理器创建方法的Django验证异常,python,django,validation,django-models,Python,Django,Validation,Django Models,我正在使用一个定制的Django模型管理器来创建一个实例。实例的字段来自从给定URL获取的数据。其中一个字段是一个文件名,其中包含我需要打开的JSON报告。我的问题是-如果我确定发生了错误(找不到文件、内容无效等),在create()方法中抛出异常是否合理,是否有首选的异常类型要抛出 该模型需要解析数据来创建有效实例,因此在执行create()方法之前,我已经知道该模型无效 您可以引发一个ObjectDoesNotExist(来自django.core.exceptions),也可以创建自己的异

我正在使用一个定制的Django模型管理器来创建一个实例。实例的字段来自从给定URL获取的数据。其中一个字段是一个文件名,其中包含我需要打开的JSON报告。我的问题是-如果我确定发生了错误(找不到文件、内容无效等),在create()方法中抛出异常是否合理,是否有首选的异常类型要抛出

该模型需要解析数据来创建有效实例,因此在执行create()方法之前,我已经知道该模型无效


您可以引发一个ObjectDoesNotExist(来自django.core.exceptions),也可以创建自己的异常调用,如:

类MyException(ObjectDoesNotExist): 通过

并在某些特定情况下提出Django没有提供令人满意的异常

备注:您的异常仍然可以从基本异常继承: 类MyException(异常): 通过

class IndexingUpdateRunManager(models.Manager):
    def create_from_run(self,run_history_url):
        run_info_dict = self.extract_fields_from_url(run_history_url)
        run_config_file = run_info_dict["run_config_file"]
        report_filename = run_info_dict["status_report_file"]
        try:
            out_fh = open(report_filename,'r')
            report_data = json.loads(out_fh)
            status_code=report_data["status"]
        except Exception, e:
            # throw an exception?
    this_run=self.create(run_config_file_used=run_config_file,
                         report_filename = report_filename,
                         run_status_code=status_code)
    return this_run

class MyUpdateRun(models.Model):
    run_config_file_used = models.FilePathField(max_length=1024,
                               help_text="config file for run")
    report_filename = models.FilePathField(max_length=1024,
                               help_text="status report file for run")
    run_status_code = models.IntegerField(help_text="status code for overall run execution")
    objects = MyUpdateRunManager()

>>MyUpdateRun.objects.create_from_run("https://server/job_status/builds/200/")