我正在编写自定义的modelformset。我需要表单按字段“ordering”的值排序。我在我的子formset类中重载了BaseFormSet的__iter__
方法。在
class SortedCatForms(BaseFormSet):
def __iter__(self):
return iter(self.forms.sort(
key=lambda form: form['ordering'].value())) #line 38, the problem line.
def __getitem__(self, index):
return list(self)[index]
Caught TypeError while rendering: 'NoneType' object is not iterable
Exception Location: ...forms.py in
__iter__
, line 38
但在源BaseFormSet中:
def __iter__(self):
"""Yields the forms in the order they should be rendered"""
return iter(self.forms)
我的代码有什么问题?如何以正确的方式去做?
编辑: 编辑:在@bobince的建议之后,我的代码变成了:
class SortedCatForms(BaseFormSet):
def __iter__(self):
return iter(
sorted(self.forms, key=lambda form: form['ordering'].value()))
def __getitem__(self, index):
return list(self)[index]
它返回没有窗体的空列表。问题在__getitem__
中吗?在
对Django不够熟悉,无法判断这是否是正确的方法,但有一个简单的问题:
^{pr2}$sort()
是列表上的一个方法,它对列表进行适当排序并返回None
。你可能是说:相关问题 更多 >
编程相关推荐