Stack Exchange
Как сделать пользователя администратором для определённой части сайта?
В моём проекте есть следующие модели:
from django.db import models
from django.contrib.auth.models import User


class Project(models.Model):
    name = models.CharField(max_length=30)
    users = models.ManyToManyField(User)

    def __str__(self):
        return self.name


class TaskList(models.Model):
    name = models.CharField(max_length=20)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)

    def __str__(self):
        return self.name


class Task(models.Model):
    name = models.CharField(max_length=40)
    description = models.TextField(max_length=400, blank=True)
    performer = models.ForeignKey(User, on_delete=models.PROTECT, blank=True, null=True)
    task_list = models.ForeignKey(TaskList, on_delete=models.CASCADE)

    def __str__(self):
        return self.name


class ChatMessage(models.Model):
    text = models.CharField(max_length=200)
    datetime = models.DateTimeField()
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)

    def __str__(self):
        return '"' + self.text[:20] + '..." (' + self.author.__str__() + ', ' + self.datetime.strftime('%d.%m.%y') + ')'

Мне нужно реализовать, чтобы пользователь, который создал проект или которого назначил другой админ, стал его администратором (он имеет дополнительные возможности вроде создания и удаления списков заданий в своём конкретном проекте).
Я думал сделать дополнительное поле у модели проекта:
class Project(models.Model):
    name = models.CharField(max_length=30)
    users = models.ManyToManyField(User)
    admins = models.ManyToManyField(User)  # или admins = []

Но на первый вариант ругается Django, а второй не сохраняется в базу данных.
Есть ли толковый вариант реализовать задуманное?

Почему бы просто не использовать permissions?

@Sergey Спасибо. Сейчас попробую
