ОБЪЕДИНЕНИЕ КВЕРИСЕТОВ 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