Как проверить, входит ли пользователь в модель "многие ко многим" django
я пытаюсь сделать разрешение для пользователя, где я определил свою модель следующим образом
class UserInstances(models.Model):
user = models.OneToOneField(User,on_delete=models.CASCADE,blank=True,null=True,unique=False)
instance_name = models.CharField(max_length=150)
instance_size = models.PositiveIntegerField(default=0)
instance_objects = models.PositiveIntegerField(default=0)
instance_map = models.TextField()
instance_permission = models.ManyToManyField(User,related_name='instance_permission')
def __str__(self):
return f"{self.instance_name} instance for {self.user}"
API код
user = Token.objects.get(key=request.auth)
if UserInstances.objects.get(id=2).instance_permission.exists(user) :// for demonstration
print("access granted")
Подскажите, как проверить существует ли пользователь или нет в объекте поля многие ко многим
вы можете использовать
.values_list('{your field}', flat=True)
и затем используйте
in python methode
или вы можете добавить id пользователей в список и затем использовать
in питоновский метод следующим образом:
users = UserInstances.objects.get(id=2).instance_permission.all()
usres_list_id = []
for user in users:
usres_list_id.append(user.id)
if user_instance.id in users_id_list:
#do somethong
Отношения "многие ко многим" могут быть запрошены с помощью поиска по отношениям, пожалуйста, обратитесь к документации Django здесь.
Короче говоря, вы можете фильтровать модель UserInstances и запрашивать пользователей в instance_permission, т.е. используя instance_permission__in.