有一个类BaseFormSet
class BaseFormSet(object):
def __iter__(self):
return iter(self.forms)
def __getitem__(self, index):
return self.forms[index]
其中self.forms是一个列表。在文档中,他们告诉我们这个类表示一组表单,其顺序与创建表单的顺序相同。我们可以改变顺序:我们必须重写BaseFormSet的_iter__;()方法。但是如果我们重写了uu iter uuu(),我们还需要重写uu getitem uuu(),以获得匹配的行为
嗯,这个_ugetItem _;()让我有点吃惊
事实上,我们在谈论清单。因此,在本例中,我将使用一个列表
这就是我所能想到的:
l = [0, 1, 2, 3, 4, 5] // Imitating a formset.
def get_reversed_index(length, index):
return -(index+1) % length
def print_result(i):
reversed_index = get_reversed_index(len(l), i)
return "Index {}, reversed {}, reversed value {}".format(i, reversed_index, l[reversed_index])
这似乎扭转了指数。但这是文档所暗示的匹配行为吗
困扰我的是:myMy代码似乎无法引发索引器异常
IndexError: list index out of range
In case of ordinary
print(l[10])
你能帮我一下吗:需要什么样的匹配行为?我的例子是否是垃圾
另外,这个班是从Django来的
我很难理解您的问题,但是如果您的意思是希望从“反向”索引中引发异常,那么您需要更改
get_reversed_index
函数目前,由于
%
或mod运算符,此函数的输出保证在范围[0, length)
内。因此,如果您想生成超出范围的索引,请尝试删除% length
相关问题 更多 >
编程相关推荐