Здесь у меня 2 модели, Компания и UserSupervision . Компания связана как внешний ключ с общей моделью отношений UserSupervision .
Я хочу получить запрос следующим образом:
Company.objects.filter(**{'usersupervision__content_type': Company,
'usersupervision__user': some_user,
'usersupervision__date_cancelled': None})
Итак, я хочу, чтобы все компании some_user появились в UserSupervision модели. Я знаю, что Company и UserSupervision не имеют прямого отношения, поэтому я подумал, может быть, мне нужно использовать raw sql с соединениями? Или любое другое более подходящее решение?
class Company(models.Model):
id = models.UUIDField(blank=True, editable=False, primary_key=True, default=uuid.uuid4)
name = models.CharField(max_length=150, unique=True)
users = models.ManyToManyField(User, related_name='companies', through='CompanyMembership')
date_created = models.DateTimeField('created date', blank=True, editable=False, auto_now_add=True)
date_updated = models.DateTimeField('updated date', blank=True, editable=False, auto_now=True)
class UserSupervision(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
supervision = models.ForeignKey(Supervision, on_delete=models.SET_NULL, null=True)
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.UUIDField()
content_object = GenericForeignKey()
date_assigned = models.DateTimeField('assigned date', blank=True, editable=False, auto_now_add=True)
date_cancelled = models.DateTimeField('cancelled date', blank=True, null=True, default=None)