Как проверить, входит ли пользователь в модель "многие ко многим" 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.

Вернуться на верх