根据Django 1.6中的字段名,迭代提取模型实例的字段值和默认值

根据Django 1.6中的字段名,迭代提取模型实例的字段值和默认值,django,django-templates,django-models,Django,Django Templates,Django Models,因此,我想在我的模型类中创建一个方法,我正在使用DetailView作为视图,该视图返回一组预先批准的字段值和用户友好的名称,我可以在模板中调用它们。此方法必须检查字段值是否不是模型中每个已批准字段的默认字段值,然后将带有字段值/名称对的列表返回到我的模板 问题是我找不到提取field.value和field.default的方法,如下所示: 我可以从错误中看出我得到了那个自我。_meta.get_field_by_name返回一个RelatedObject,但是Django文档似乎不清楚这个对

因此,我想在我的模型类中创建一个方法,我正在使用DetailView作为视图,该视图返回一组预先批准的字段值和用户友好的名称,我可以在模板中调用它们。此方法必须检查字段值是否不是模型中每个已批准字段的默认字段值,然后将带有字段值/名称对的列表返回到我的模板

问题是我找不到提取field.value和field.default的方法,如下所示:

我可以从错误中看出我得到了那个自我。_meta.get_field_by_name返回一个RelatedObject,但是Django文档似乎不清楚这个对象的属性和方法


请提供帮助。

我不知道解决内部元属性有多好,通常不建议这样做,但是-您可以使用

self._meta.get_field_by_name(fieldName[0])[0].default
请注意[0],因为get_field_by_name在Django 1.6中返回一个元组,第一个元素作为field对象本身

要获取此实例的此字段的值,请使用: getattrself,字段名[0]

所以代码看起来像:

for fieldName in approvedFields:
        field = getattr(self, fieldName[0])
        if field != self._meta.get_field_by_name(fieldName[0]).default:
            resultFieldPairs.append(tuple([fieldName[1], field]))

你希望从field.value得到什么?你是说getattrself,field.name是的,我只是不知道实际的代码是什么:PAttributeError:'int'对象没有属性'default',所以现在我们只需要一种方法来获取字段的默认值。我需要你的模型类代码来理解这个。也许您的字段没有默认值?对不起!您编辑后,我没有附加代码。它现在似乎起作用了。谢谢
for fieldName in approvedFields:
        field = getattr(self, fieldName[0])
        if field != self._meta.get_field_by_name(fieldName[0]).default:
            resultFieldPairs.append(tuple([fieldName[1], field]))