In my project there are the following models:

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

I need to realize that the user who created the project or who was assigned by another administrator, became its administrator (he has additional features like creating and deleting task lists in his particular project).

I thought to make an additional field for the project model:

 class Project(models.Model): name = models.CharField(max_length=30) users = models.ManyToManyField(User) admins = models.ManyToManyField(User) # или admins = [] 

But Django swears at the first option, and the second is not saved to the database.

Is there a sensible option to realize our plans?

  • Why not just use permissions ? - Sergey Gornostaev
  • @Sergey Thank you. Now I will try - Alexander Khoroshavin

0