How to use lambda function with dictionary?
up vote
0
down vote
favorite
How can I use lambda function with map for create a object? I receive 1 or more objects in my serializer by Json, then I want iterate this json and create a object. Here is my code from models.py, and my serializers.py.
# Models.py
class ModelA(models.Model):
...
@classmethod
def insert_car(self, i, user):
car = i.get('car')
item = i.get('item')
quantity = i.get('quantity')
ModelA.objects.create(user=user, car=car, item=item, quantity=quantity, status=self.STATUS_PENDING)
return True
# serializers.py
class ModelASerializer(ModelSerializer):
class Meta:
model = Order
fields = ['car', 'item', 'quantity']
class MultipleOrderSerializer(ModelSerializer):
items = ModelASerializer(many=True)
class Meta:
model = Order
fields = ['items']
def create(self, request, *args, **kwargs):
list = self.data.get('items')
user = self.context.get('request').user
a = map(lambda i : ModelA.insert_car(i, user), list)
return self.data
I tryed print anything inside my insert_car, but doesn't print nothing, the method insert_car doesn't called
#Update01
According to @bro-grammer, "In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding map(...) with list(map(...))"
then, the line calling map function looks like this:
create_car = list(map(lambda i : ModelA.insert_car(i, user), list))
python django django-models django-rest-framework django-serializer
|
show 1 more comment
up vote
0
down vote
favorite
How can I use lambda function with map for create a object? I receive 1 or more objects in my serializer by Json, then I want iterate this json and create a object. Here is my code from models.py, and my serializers.py.
# Models.py
class ModelA(models.Model):
...
@classmethod
def insert_car(self, i, user):
car = i.get('car')
item = i.get('item')
quantity = i.get('quantity')
ModelA.objects.create(user=user, car=car, item=item, quantity=quantity, status=self.STATUS_PENDING)
return True
# serializers.py
class ModelASerializer(ModelSerializer):
class Meta:
model = Order
fields = ['car', 'item', 'quantity']
class MultipleOrderSerializer(ModelSerializer):
items = ModelASerializer(many=True)
class Meta:
model = Order
fields = ['items']
def create(self, request, *args, **kwargs):
list = self.data.get('items')
user = self.context.get('request').user
a = map(lambda i : ModelA.insert_car(i, user), list)
return self.data
I tryed print anything inside my insert_car, but doesn't print nothing, the method insert_car doesn't called
#Update01
According to @bro-grammer, "In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding map(...) with list(map(...))"
then, the line calling map function looks like this:
create_car = list(map(lambda i : ModelA.insert_car(i, user), list))
python django django-models django-rest-framework django-serializer
1
I think yourcreatemethod signature should be likedef create(self, validated_data)
– bro-grammer
Nov 22 at 1:23
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
It only accepts two arguments one isselfand other isvalidated_data. In your signature you are passing several different arguments.
– bro-grammer
Nov 22 at 1:57
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
3
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surroundingmap(...)withlist(map(...))
– bro-grammer
Nov 22 at 2:06
|
show 1 more comment
up vote
0
down vote
favorite
up vote
0
down vote
favorite
How can I use lambda function with map for create a object? I receive 1 or more objects in my serializer by Json, then I want iterate this json and create a object. Here is my code from models.py, and my serializers.py.
# Models.py
class ModelA(models.Model):
...
@classmethod
def insert_car(self, i, user):
car = i.get('car')
item = i.get('item')
quantity = i.get('quantity')
ModelA.objects.create(user=user, car=car, item=item, quantity=quantity, status=self.STATUS_PENDING)
return True
# serializers.py
class ModelASerializer(ModelSerializer):
class Meta:
model = Order
fields = ['car', 'item', 'quantity']
class MultipleOrderSerializer(ModelSerializer):
items = ModelASerializer(many=True)
class Meta:
model = Order
fields = ['items']
def create(self, request, *args, **kwargs):
list = self.data.get('items')
user = self.context.get('request').user
a = map(lambda i : ModelA.insert_car(i, user), list)
return self.data
I tryed print anything inside my insert_car, but doesn't print nothing, the method insert_car doesn't called
#Update01
According to @bro-grammer, "In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding map(...) with list(map(...))"
then, the line calling map function looks like this:
create_car = list(map(lambda i : ModelA.insert_car(i, user), list))
python django django-models django-rest-framework django-serializer
How can I use lambda function with map for create a object? I receive 1 or more objects in my serializer by Json, then I want iterate this json and create a object. Here is my code from models.py, and my serializers.py.
# Models.py
class ModelA(models.Model):
...
@classmethod
def insert_car(self, i, user):
car = i.get('car')
item = i.get('item')
quantity = i.get('quantity')
ModelA.objects.create(user=user, car=car, item=item, quantity=quantity, status=self.STATUS_PENDING)
return True
# serializers.py
class ModelASerializer(ModelSerializer):
class Meta:
model = Order
fields = ['car', 'item', 'quantity']
class MultipleOrderSerializer(ModelSerializer):
items = ModelASerializer(many=True)
class Meta:
model = Order
fields = ['items']
def create(self, request, *args, **kwargs):
list = self.data.get('items')
user = self.context.get('request').user
a = map(lambda i : ModelA.insert_car(i, user), list)
return self.data
I tryed print anything inside my insert_car, but doesn't print nothing, the method insert_car doesn't called
#Update01
According to @bro-grammer, "In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding map(...) with list(map(...))"
then, the line calling map function looks like this:
create_car = list(map(lambda i : ModelA.insert_car(i, user), list))
python django django-models django-rest-framework django-serializer
python django django-models django-rest-framework django-serializer
edited Nov 22 at 12:20
asked Nov 22 at 1:15
Matheus Soares
417
417
1
I think yourcreatemethod signature should be likedef create(self, validated_data)
– bro-grammer
Nov 22 at 1:23
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
It only accepts two arguments one isselfand other isvalidated_data. In your signature you are passing several different arguments.
– bro-grammer
Nov 22 at 1:57
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
3
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surroundingmap(...)withlist(map(...))
– bro-grammer
Nov 22 at 2:06
|
show 1 more comment
1
I think yourcreatemethod signature should be likedef create(self, validated_data)
– bro-grammer
Nov 22 at 1:23
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
It only accepts two arguments one isselfand other isvalidated_data. In your signature you are passing several different arguments.
– bro-grammer
Nov 22 at 1:57
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
3
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surroundingmap(...)withlist(map(...))
– bro-grammer
Nov 22 at 2:06
1
1
I think your
create method signature should be like def create(self, validated_data)– bro-grammer
Nov 22 at 1:23
I think your
create method signature should be like def create(self, validated_data)– bro-grammer
Nov 22 at 1:23
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
It only accepts two arguments one is
self and other is validated_data. In your signature you are passing several different arguments.– bro-grammer
Nov 22 at 1:57
It only accepts two arguments one is
self and other is validated_data. In your signature you are passing several different arguments.– bro-grammer
Nov 22 at 1:57
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
3
3
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding
map(...) with list(map(...))– bro-grammer
Nov 22 at 2:06
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding
map(...) with list(map(...))– bro-grammer
Nov 22 at 2:06
|
show 1 more comment
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422623%2fhow-to-use-lambda-function-with-dictionary%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53422623%2fhow-to-use-lambda-function-with-dictionary%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I think your
createmethod signature should be likedef create(self, validated_data)– bro-grammer
Nov 22 at 1:23
What’s the difference? Can you explain to me??
– Matheus Soares
Nov 22 at 1:55
It only accepts two arguments one is
selfand other isvalidated_data. In your signature you are passing several different arguments.– bro-grammer
Nov 22 at 1:57
Because that the lambda map doesn’t work? If a use a for inside my insert_car its works normally. I don’t understand why lambda doesn’t work.
– Matheus Soares
Nov 22 at 2:04
3
Oh i get it now. In python 3 map is a lazy iterator. It doesnot do anything util you consume it. Try surrounding
map(...)withlist(map(...))– bro-grammer
Nov 22 at 2:06