ОБЪЕДИНЕНИЕ КВЕРИСЕТОВ DJANGO СО СВЯЗАННЫМИ ФИЛЯМИ ВНЕШНИХ КЛЮЧЕЙ

У меня есть три модели, которые перечислены ниже. В представлении под названием "Представление рабочего места" мне нужно показать все продукты, которые соответствуют двум критериям. Мне нужно показать все "Дозировки", где статус "Ожидает" и "Форма дозировки.продукта.формы" равна выделенной форме рабочего места.

Я не уверен в том, как быстрее и лучше всего это сделать. Код приведен ниже

app name = "prescriptions" 
class Dispensing(models.Model):
    class Status(models.TextChoices):
        RECEIVED = 'A', _('Order received')
        OWING = 'W', _('Owing')
        PAYMENT = 'C', _('Invoice sent')
        PENDING = 'D', _('In production')
        #CHECKED = 'C', _('Approved for release by pharmacist')
        DISPATCHED = 'E',_('Dispatched')
    script_status = models.CharField(max_length=2,choices=Status.choices,default=Status.RECEIVED,)
    product = models.ForeignKey(Product,related_name='product',on_delete=models.CASCADE)

app_name = 'product
class Product(models.Model):
    
    form = models.ForeignKey(Form,
                                 related_name='products',
                                 on_delete=models.CASCADE, blank=True,null=True)
   
app name = "equipment"
class Workstation(models.Model):
    created_on = models.DateField(default=((timezone.now())+(datetime.timedelta(hours=11))),blank=True,null=True)
    name = models.CharField(max_length=200, db_index=True, blank=True,null=True)
    asset_id = models.CharField(max_length=200, db_index=True, blank=True,null=True)
    product_types = models.ForeignKey(Form,related_name='forms',on_delete=models.CASCADE,blank=True,null=True)

app name = "list"
class Form(models.Model):
    description = models.CharField(max_length=255)

Я удалил ненужные поля. И дозирование, и рабочее место связаны отдельно с формой.

Мне нужно запросить все раздачи, где dispensing.product.form равна workstation.form. Я просто не могу придумать простой запрос для этого.

Вид ниже:

class WorkstationDetailView(DetailView):

    model = Workstation

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['workstations'] = Workstation.objects.all()
        context['pending_work'] = Dispensing.objects.filter()?????##<--I don't know what should go here!!!!
        return context 

Посоветуйте, пожалуйста, лучший запрос, который позволит достичь этого быстро и с минимальной нагрузкой.

С уважением, AC

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