modelformset\uu iter\uuu重载问题

2024-09-29 22:28:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写自定义的modelformset。我需要表单按字段“ordering”的值排序。我在我的子formset类中重载了BaseFormSet的__iter__方法。在

我的类从BaseFormSet继承:

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]

我在我的modelformset中使用它:

^{pr2}$

问题是:

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)

我的代码有什么问题?如何以正确的方式去做?

编辑:

full traceback

编辑:

在@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__中吗?在


Tags: theselfformindexreturndeflineforms
1条回答
网友
1楼 · 发布于 2024-09-29 22:28:26

对Django不够熟悉,无法判断这是否是正确的方法,但有一个简单的问题:

return iter(self.forms.sort( ...

sort()是列表上的一个方法,它对列表进行适当排序并返回None。你可能是说:

^{pr2}$

相关问题 更多 >

    热门问题