2015-04-20 5 views
3

Я создал пользовательский пользователь и добавил разрешение is_driver, чтобы проверить, принадлежит ли мой пользователь Driver's Group.При добавлении разрешений пользователю - ValueError: слишком много значений для распаковки

class CustomUser(AbstractUser): 
    mobile = models.CharField(max_length=16) 
    address = models.CharField(max_length=100) 
    class Meta: 
     permissions = (
      ("is_driver", "Can access driver's page") 
     ) 

Но когда я бегу manage.py makemigrations, а затем manage.py migrate, он выдает ошибку: ValueError: too many values to unpack. Я новичок в разрешениях, возможно, есть еще один способ добавить разрешения на Group. Что не так?

ответ

16

Попробуйте добавить недостающую , в конце вашего кортежа

class CustomUser(AbstractUser): 
    mobile = models.CharField(max_length=16) 
    address = models.CharField(max_length=100) 
    class Meta: 
     permissions = (
      ("is_driver", "Can access driver's page"), 
     ) 

Python строго о том, что, когда tuple имеет только один элемент. Чтобы узнать, что происходит на уровне Python, вы можете открыть оболочку и попробовать следующее.

>>> foo = (('ham', 'eggs')) 
>>> foo 
('ham', 'eggs') 
>>> foo[0] 
'ham' 
>>> foo = (('ham', 'eggs'),) 
>>> foo 
(('ham', 'eggs'),) 
>>> foo[0] 
('ham', 'eggs') 

Короче говоря, без , это различные структуры данных.