在self.fields中获取多个值

时间:2017-09-28 15:13:07

标签: python django

fields = ['first_name', 'last_name', 'birth_date']
user__first_name, user__last_name, birth_date = self.fields.get(fields)

由于self.fields是一个词典,所以不可能做这样的事情。怎么可能修改它以便它起作用?

    198     def check_user__first_name_user__last_name_birth_date(self):
    199         import ipdb; ipdb.set_trace()
    200 
--> 201         fields = ['first_name', 'last_name', 'birth_date']
    202         user__first_name, user__last_name, birth_date = self.fields.get(fields)
    203         for m in self._check(CustomerProfile, user__first_name=user__first_name,
    204                              user__last_name=user__last_name,
    205                              birth_date=birth_date):
    206             self._match(m.user, _('Same first name, last name and birth date.'),
    207                         fields, ', '.join(map(str, self.fields.get(fields))))

2 个答案:

答案 0 :(得分:1)

由于self.fields是字典,因此您需要的内容相当于:

user__first_name, user__last_name, birth_date = (self.fields.get("first_name"),
                                                 self.fields.get("last_name"),
                                                 self.fields.get("birth_date"))

所以,例如,使用列表理解:

fields = ['first_name', 'last_name', 'birth_date']
user__first_name, user__last_name, birth_date = [self.fields.get(x) for x in fields]

答案 1 :(得分:0)

在python列表中,对象没有get 这样做的正确方法是......

>>> user__first_name, user__last_name, birth_date = fields