How to use lambda function with dictionary?












0















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))










share|improve this question




















  • 1





    I think your create method signature should be like def create(self, validated_data)

    – bro-grammer
    Nov 22 '18 at 1:23













  • What’s the difference? Can you explain to me??

    – Matheus Soares
    Nov 22 '18 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 '18 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 '18 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(...) with list(map(...))

    – bro-grammer
    Nov 22 '18 at 2:06
















0















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))










share|improve this question




















  • 1





    I think your create method signature should be like def create(self, validated_data)

    – bro-grammer
    Nov 22 '18 at 1:23













  • What’s the difference? Can you explain to me??

    – Matheus Soares
    Nov 22 '18 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 '18 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 '18 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(...) with list(map(...))

    – bro-grammer
    Nov 22 '18 at 2:06














0












0








0








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))










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 22 '18 at 12:20







Matheus Soares

















asked Nov 22 '18 at 1:15









Matheus SoaresMatheus Soares

417




417








  • 1





    I think your create method signature should be like def create(self, validated_data)

    – bro-grammer
    Nov 22 '18 at 1:23













  • What’s the difference? Can you explain to me??

    – Matheus Soares
    Nov 22 '18 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 '18 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 '18 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(...) with list(map(...))

    – bro-grammer
    Nov 22 '18 at 2:06














  • 1





    I think your create method signature should be like def create(self, validated_data)

    – bro-grammer
    Nov 22 '18 at 1:23













  • What’s the difference? Can you explain to me??

    – Matheus Soares
    Nov 22 '18 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 '18 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 '18 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(...) with list(map(...))

    – bro-grammer
    Nov 22 '18 at 2:06








1




1





I think your create method signature should be like def create(self, validated_data)

– bro-grammer
Nov 22 '18 at 1:23







I think your create method signature should be like def create(self, validated_data)

– bro-grammer
Nov 22 '18 at 1:23















What’s the difference? Can you explain to me??

– Matheus Soares
Nov 22 '18 at 1:55





What’s the difference? Can you explain to me??

– Matheus Soares
Nov 22 '18 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 '18 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 '18 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 '18 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 '18 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 '18 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 '18 at 2:06












0






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',
autoActivateHeartbeat: false,
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
});


}
});














draft saved

draft discarded


















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

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































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.




draft saved


draft discarded














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





















































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







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

Npm cannot find a required file even through it is in the searched directory