小编fla*_*ino的帖子

嵌套的FOR循环:可读性和性能

我理解嵌套的FOR循环.我理解他们做了什么,以及他们是如何做到的.但我的问题是它们对我来说似乎非常难以理解.

举个例子:

for (int i = 0, y = 0; y <= ySize; y++) {
    for (int x = 0; x <= xSize; x++, i++) {
        vertices[i] = new Vector3(x, y);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,这个循环非常简单.它只是一个x/y"二维"循环.但是当我在这个嵌套循环中添加越来越多的"维度"时,有没有办法让代码不是嵌套中的巢和可靠的反向计数变量(i,x,y,z等) ?

另外,额外的嵌套是否会以线性方式影响性能,或者当你嵌套更多的东西时,额外的FORs会使事情变得越来越低效吗?

c# performance loops for-loop

12
推荐指数
4
解决办法
2787
查看次数

"切片拍摄后无法更新查询".最佳做法?

由于我的项目的性质,我发现自己不断从查询集中获取切片,如下所示:

Thread.objects.filter(board=requested_board_id).order_by('-updatedate')[:10]
Run Code Online (Sandbox Code Playgroud)

但这让我遇到了实际使用我选择的元素进行处理的问题,因为切片后任何类型的.update()或.filter()都不起作用.

我知道有几种方法可以解决它,但它们都是混乱和混乱,严重降低了代码的可读性,特别是当我不得不经常这样做时.

什么是解决切片过滤器限制的最佳方法?

python django

5
推荐指数
1
解决办法
3296
查看次数

使用@login_required而不在URL中附加"?next = /"

我正在以这种方式使用@login_required装饰器:

@login_required(login_url=reverse_lazy('login'))
def my_view:
Run Code Online (Sandbox Code Playgroud)

现在我知道我可以在设置中指定登录URL,但这不是我的问题.事情是在它重定向到我的"登录"URL之后,它会附加?next=到它,如下所示:

http://whatever.com/login/?next=/fakeurl/
Run Code Online (Sandbox Code Playgroud)

我不想要它.有没有办法覆盖这个?谢谢.

python django url-redirection

4
推荐指数
1
解决办法
499
查看次数

ModelChoiceField() 上的“to_field_name”参数似乎不起作用

嗯,几乎就是标题中所说的。

我正在我的一个ModelChoiceField()中创建一个Forms,如下所示:

class FormCreatePlace(forms.ModelForm):
    (...)
    category = forms.ModelChoiceField(queryset=Category.objects.all(), to_field_name='name')
    (...)
Run Code Online (Sandbox Code Playgroud)

Category模型定义如下所示:

class Category(models.Model):
    uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=40)
Run Code Online (Sandbox Code Playgroud)

然而,HTML 表单上的字段本身坚持将主键(一系列 UUID)显示为选项。

我究竟做错了什么?

django django-forms

4
推荐指数
1
解决办法
1705
查看次数

Django save() 覆盖,最佳实践:在模型、表单或视图上?

我已经通过覆盖这样的save()函数成功地散列了我的自定义用户模型的密码:

def save(self, commit = True): 
    user = super(RegisterForm, self).save(commit = False)
    user.set_password(self.cleaned_data["password1"])
    if commit:
        user.save()
    return user
Run Code Online (Sandbox Code Playgroud)

但我已将此覆盖置于我的注册表单定义中,我突然想到我也可以在用户模型定义中或在我的register()视图中执行此操作。

是否有“正确”的地方可以覆盖这些功能,例如clean()save()?有什么实际区别吗?

ps:我对使用 Django 的默认密码更改和注册视图或表单不感兴趣。

django django-models django-forms django-views

3
推荐指数
1
解决办法
3823
查看次数