Есть модель чата:
class Chat(models.Model):
participants = models.ManyToManyField(Contact, related_name='chats')
messages = models.ManyToManyField(Message, blank=True)
def __str__(self):
return f'{self.pk}'
class Meta:
verbose_name = 'Чат'
verbose_name_plural = 'Чаты'
и есть модель пользователя:
class Contact(AbstractBaseUser, PermissionsMixin):
'''Кастомная модель пользователя'''
email = models.EmailField(verbose_name='email', max_length = 60, unique = True)
slug = models.SlugField(default='')
first_name = models.CharField(max_length=30, default = '')
last_name = models.CharField(max_length=30, default = '')
phone_number = models.CharField(max_length=11)
date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add = True)
last_login = models.DateTimeField(verbose_name='last login', auto_now = True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
avatar = models.ImageField(upload_to='user_avatars/%Y/%m/%d', blank=True)
is_active = models.BooleanField(default=False)
status = models.CharField(max_length=100, default='', blank=True)
friends = models.ManyToManyField('self', blank=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name', 'phone_number', 'slug']
objects = ContactManager()
def __str__(self):
return self.email
def get_url(self):
try:
return self.avatar.url
except ValueError:
return None
Пытаюсь из этой таблицы вытащить тот чат, в котором есть определенные участники
В данном случае это участники с id 1 и 2, но в последствии это будут определенные участники
Пытался написать что-то такое:
c = Contact.objects.filter(id=1).raw('SELECT *, id AS chat_id FROM chat_chat WHERE participants=1 AND participants=2')
Но получаю ошибку:
OperationalError: no such column: participants
В чем моя ошибка?
И как бы так написать, чтобы это работало?
Спасибо!