Чтобы ограничить возможные значения для поля роли;
class UserModel(models.Model):
ROLE_CHOICES = (
('role1', 'Role 1'),
('role2', 'Role 2'),
('role3', 'Role 3'),
)
name = models.CharField(max_length=200)
role = models.CharField(max_length=200, choices=ROLE_CHOICES)
Чтобы ограничить владельцев TestModel для role3, я не думаю, что есть способ принудительно установить его на уровне базы данных, но если вы используетеDjango Rest Framework, вы можете принудительно установить его на уровне приложения, написав собственный класс разрешений для представления, отвечающего за создание записей TestModel, чтобы позволить только пользователям с role3 быть владельцем экземпляра TestModel.Это будет выглядеть так:
class TestModelPermissions(permissions.BasePermission):
def has_permission(self, request, view):
if view.action == 'create':
return request.user.role == 'role3'
return True