Python 在Django中迭代模型实例变量

Python 在Django中迭代模型实例变量,python,django,django-models,Python,Django,Django Models,考虑一个定义如下的模型: class ProblemVerificationModel(CreateUpdateDateModel): problem = models.ForeignKey(Problem, related_name="problem_survey") verifier = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="verified_problem") is_problem_pr

考虑一个定义如下的模型:

class ProblemVerificationModel(CreateUpdateDateModel):
    problem = models.ForeignKey(Problem, related_name="problem_survey")
    verifier = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="verified_problem")

    is_problem_properly_formated = ... # BooleanField
    some_field = ... #BooleanField
    some_other_field = ... #BooleanField

我需要找到
ProblemVerificationModel
模型实例的所有类整数值(
True
->1,
False
->0)之和。我可以通过使用
instance.field
访问每个字段来添加这些值,然后将它们全部添加。然而,我想知道是否有更干净的方法可以做到这一点。

我想写一个这样做的方法会更像python。除非必要,否则我不会对要使用的字段使用动态列表,因为您不会经常更改模型

class ProblemVerificationModel(CreateUpdateDateModel):
    ...
    is_problem_properly_formated = ... # BooleanField
    ...

    def get_bool_sum(self):
        bool_fields = (
            'is_problem_properly_formated',
            'some_field',
            'some_other_field',
        )
        return sum(bool(getattr(self, field)) for field in bool_fields)
您可以使用模型的,以便动态收集所有
整数-
布尔字段及其子类型:

class ProblemVerificationModel(CreateUpdateDateModel):
    #...

    def int_sum(self):
        return sum(
            getattr(self, f.name) or 0 for f in self._meta.get_fields() 
            if isinstance(f, (IntegerField, BooleanField))
        )