在django admin中验证已解析的数据

时间:2017-09-07 21:15:26

标签: python django validation

我是Django的新手。我想对Django admin中上传的xml文件中的解析数据进行重复验证检查。

  1. 管理员上传xml文件
  2. 提取所需数据
  3. 验证数据是否已存在于数据库中
  4. 如果是,则提出validationError
  5. 如果否,则保存模型。
  6. 除了第3点之外,以上几点是有效的。我不确定在admin.py中我应该检查该值是否已经存在。

    来自admin.py的代码

    def save_model(self, request, obj, form, change):
            if not change:
                category_name, module_names = \
                    self.handle_uploaded_file(request.FILES['category_file'])
     .......................................................................
    
    def handle_uploaded_file(self, f):
    #Upload the file
    ..................................
        return self.parse_uploaded_xml(name)
    
    def parse_uploaded_xml(self, name):        
        tree = ET.parse(name)
        root = tree.getroot()
    
        category_name = root[0].text
        ..............................
        #return the category name and module name
    

    来自models.py的代码

    category_name = models.CharField(max_length=150, blank=False, null=True, default="", unique=True)
    module_name = models.TextField(blank=False, null=True)
    

    我想使用以下代码进行验证

    def clean_category_name(self):
            if self.category_name and Category.objects.filter(category_name=self.category_name).exists():
                raise ValidationError('This category is already in the database. Please supply a different category.')
    

    unique = true在上传文件/添加类别时不起作用,但在编辑单个类别时它可以正常工作。

    非常感谢任何帮助/链接/建议。提前谢谢。

0 个答案:

没有答案