小编Ana*_*ass的帖子

如何在ES6中将结构化为动态命名的变量?

我们假设我有以下对象:

const user = { 
  id: 42, 
  displayName: "jdoe",
  fullName: { 
      firstName: "John",
      lastName: "Doe"
  }
};
Run Code Online (Sandbox Code Playgroud)

而我只想要idfullName.

我会做以下事情:

const { id, fullName } = user
Run Code Online (Sandbox Code Playgroud)

轻松,对吧?

现在让我们假设我想根据另一个变量的值来进行解构fields.

const fields = [ 'id', 'fullName' ]
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:我如何根据一系列密钥进行解构?

我无耻地尝试了以下但没有成功:

let {[{...fields}]} = userlet {[...fields]} = user.有什么办法可以做到这一点吗?

谢谢

javascript ecmascript-6

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

form.cleaned_data = {'name':{...}}的奇怪值

我有一个简单的表单和一个基本如下的视图:

from annoying.decorators import ajax_request

@require_POST
@login_required
@ajax_request
def my_view(request):
    form = MyForm(request.POST)
    if form.is_valid():
        form.save(request.user)
        return {"ok": True}
    return {"ok": False, "errors": form.errors}
Run Code Online (Sandbox Code Playgroud)

forms.py:

class MyForm(forms.Form):
    name = forms.CharField(max_length=250)

    def clean_name(self):
        cleaned_data = self.cleaned_data

        name = cleaned_data.get('name', '')
        if MyModel.objects.filter(name__iexact=name).exists():
            raise forms.ValidationError(_(u"This already exists."))
        return cleaned_data

    def save(self, user):
        obj, created = MyModel.objects.get_or_create(name=self.cleaned_data["name"], user=user)
        return obj
Run Code Online (Sandbox Code Playgroud)

但是我在获取form.save方法中的self.cleaned_data时遇到了问题.在MyForm.clean_name我的self.cleaned_data很酷.

但在form.save级别上,self.cleaned_data = {'name':{...}}与self.cleaned_data ['name']相同.等等..还有self.cleaned_data ['name'] ['name'] ['name'] ['name'] ['name'] ... ['name'] ['name']

type(self.cleaned_data),它的关键是 dict

什么可以使我的代码表现得那样?

python django django-forms django-views

0
推荐指数
1
解决办法
362
查看次数