我们假设我有以下对象:
const user = {
id: 42,
displayName: "jdoe",
fullName: {
firstName: "John",
lastName: "Doe"
}
};
Run Code Online (Sandbox Code Playgroud)
而我只想要id
和fullName
.
我会做以下事情:
const { id, fullName } = user
Run Code Online (Sandbox Code Playgroud)
轻松,对吧?
现在让我们假设我想根据另一个变量的值来进行解构fields
.
const fields = [ 'id', 'fullName' ]
Run Code Online (Sandbox Code Playgroud)
现在我的问题是:我如何根据一系列密钥进行解构?
我无耻地尝试了以下但没有成功:
let {[{...fields}]} = user
和let {[...fields]} = user
.有什么办法可以做到这一点吗?
谢谢
我有一个简单的表单和一个基本如下的视图:
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
什么可以使我的代码表现得那样?