Andrew
Andrew

Reputation: 433

When adding permissions to User - ValueError: too many values to unpack

I created a custom user and add permission is_driver to check whether my user belongs to Driver's Group.

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

But when I run manage.py makemigrations and then manage.py migrate, it throws an error: ValueError: too many values to unpack. I'm new to permissions, maybe there is some other way to add permissions to a Group. What's wrong?

Upvotes: 4

Views: 2231

Answers (1)

sthzg
sthzg

Reputation: 5554

Try to add the missing , at the end of your tuple

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 is strict about that when a tuple only has one item. To see what happens at Python level you could open the shell and try the following.

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

Long story short, without the , it is a different data structure.

Upvotes: 24

Related Questions