【问题标题】:Hi my custom validation is throwing a TypeError saying issubclass() arg 1 must be a class嗨,我的自定义验证抛出 TypeError 说 issubclass() arg 1 must be a class
【发布时间】:2023-03-12 02:00:01
【问题描述】:

您好,我添加了自定义验证。它抛出 TypeError 说 issubclass() arg 1 必须是一个类。我在 admin.py 中的代码是

class AppraisalScheduleAdmin(admin.ModelAdmin):
    exclude = ['intUpdatedBy']
    form = 'tbmstappraisalschedForm'

        def save_model(self, request, obj, form, change):
            obj.intUpdatedBy = request.user.id
            obj.save()

class tbmstappraisalschedForm(forms.ModelForm):

     def clean(self):
          """ 
          Override the default clean method to check whether this course has been already inputted.
          """    
          cleaned_data = super(tbmstappraisalschedForm, self).clean()
          depart_id = cleaned_data.get('intDeptID')
          fromdate = cleaned_data.get('sdtFromDate')
          todate = cleaned_data.get('todate')
          matching_records = tbmstappraisalsched.objects.filter(intDeptID=depart_id)
          if self.instance:
              matching_records.exclude(pk=self.instance.pk)
          if matching_records.exists():
              msg = "The slot for selected department and selected dates exists" % name
              raise ValidationError(msg)
          else:
              return self.cleaned_data
    class Meta:
        model = tbmstappraisalsched

回溯是

追溯: get_response 中的文件“C:\Python27\lib\site-packages\django\core\handlers\base.py” 103. resolver_match = resolver.resolve(request.path_info) 解析中的文件“C:\Python27\lib\site-packages\django\core\urlresolvers.py” 319. 对于 self.url_patterns 中的模式: url_patterns 中的文件“C:\Python27\lib\site-packages\django\core\urlresolvers.py” 347.模式=getattr(self.urlconf_module,“urlpatterns”,self.urlconf_module) urlconf_module 中的文件“C:\Python27\lib\site-packages\django\core\urlresolvers.py” 342. self._urlconf_module = import_module(self.urlconf_name) import_module 中的文件“C:\Python27\lib\site-packages\django\utils\importlib.py” 35. 进口(名称) 文件“C:\pythonprgs\opas\opas\urls.py”在 5. admin.autodiscover() 自动发现中的文件“C:\Python27\lib\site-packages\django\contrib\admin__init__.py” 29. import_module('%s.admin' % app) import_module 中的文件“C:\Python27\lib\site-packages\django\utils\importlib.py” 35. 进口(名称) 文件“C:\pythonprgs\opas\schdeules\admin.py”在 60. admin.site.register(tbmstappraisalsched,AppraisalScheduleAdmin) 注册中的文件“C:\Python27\lib\site-packages\django\contrib\admin\sites.py” 98. 验证(admin_class,模型) 验证中的文件“C:\Python27\lib\site-packages\django\contrib\admin\validation.py” 25. validate_base(cls, 模型) validate_base 中的文件“C:\Python27\lib\site-packages\django\contrib\admin\validation.py” 317. if hasattr(cls, 'form') 而不是 issubclass(cls.form, BaseModelForm):

异常类型:/admin/schdeules/tbmstappraisalsched/add/ 处的 TypeError 异常值:issubclass() arg 1 必须是一个类

【问题讨论】:

  • 1.请修复您的缩进,并且 2. 请发布实际错误和回溯。
  • 没有缩进错误

标签: django django-forms django-admin


【解决方案1】:

请看下面的admin.py代码

 从 .forms 导入 tbmstappraisalschedForm
    类 AppraisalScheduleAdmin(admin.ModelAdmin):
        排除 = ['intUpdatedBy']
    #form = 'tbmstappraisalschedForm' 你不能在这里传递字符串。
         form = tbmstappraisalschedForm #这样做

        def save_model(self, request, obj, form, change):
            obj.intUpdatedBy = request.user.id
            obj.save()

【讨论】:

  • 当我按照你所说的那样尝试时,它会引发错误 tbmstappraisalschedForm' 未定义。
  • 是的,伙计,请将该表单类调用到您的 admin.py 文件中。像 from .forms import tbmstappraisalschedForm 一样
  • 更新记录时也抛出错误。我希望只在插入时抛出错误。
猜你喜欢
  • 2022-07-09
  • 1970-01-01
  • 2020-03-23
  • 2021-05-13
  • 2011-01-28
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多