我正在开发一个 django 项目,并从其他开发人员手中接管该项目,因为他们已经离开了该项目。我遇到了一个查询,我无法理解它是如何工作的,这就是有问题的查询。
provider_evaluations = ProviderEvaluation.objects.filter(
customer_provider_relation_id__projectproviders__project_id=project_id,
customer_provider_relation_id__provider_id=provider_id,
这些是查询中包含的型号。
class ProviderEvaluation(models.Model):
provider_evaluation_criterias_id = models.ForeignKey(ProviderEvaluationCriterias, on_delete=models.CASCADE, null=True)
evaluation = models.CharField(max_length=255, null=True)
comment = models.TextField(null=True, blank=True)
created_by = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, null=True)
workflow_step = models.ForeignKey(WorkflowStep, on_delete=models.CASCADE, default=None, null=True)
customer_provider_relation_id = models.ForeignKey(CustomerProviderRelation, on_delete=models.CASCADE, null=True, default=None)
def __str__(self):
return f"{self.provider_evaluation_criterias_id} - {self.evaluation}"
class CustomerProviderRelation(models.Model):
customer_tenant_type = models.ForeignKey(
ContentType,
on_delete=models.CASCADE,
related_name='customer_tenant',
limit_choices_to={'model__in': ['customer']},
)
provider_tenant_type = models.ForeignKey(
ContentType,
on_delete=models.CASCADE,
related_name='provider_tenant',
limit_choices_to={'model__in': ['provider']},
)
customer_tenant_id = models.PositiveIntegerField()
provider_tenant_id = models.PositiveIntegerField()
customer_tenant = GenericForeignKey('customer_tenant_type', 'customer_tenant_id')
provider_tenant = GenericForeignKey('provider_tenant_type', 'provider_tenant_id')
customer_id = models.ForeignKey(Customer, on_delete=models.CASCADE)
provider_id = models.ForeignKey(Provider, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
# Assign values to content type and object ID fields based on the instance being saved
if isinstance(self.customer_tenant, Customer):
self.customer_tenant_type = ContentType.objects.get_for_model(Customer)
self.customer_tenant_id = self.customer_tenant.id
if isinstance(self.provider_tenant, Provider):
self.provider_tenant_type = ContentType.objects.get_for_model(Provider)
self.provider_tenant_id = self.provider_tenant.id
super().save(*args, **kwargs)
def __str__(self):
return f"CustomerProviderRelation ID: {self.id}"
class ProjectProviders(models.Model):
STATE_CHOICES = [
('searched', 'Searched'),
('initiated', 'Initiated'),
('completed', 'Completed'),
('closed', 'Closed'),
('rejected', 'Rejected'),
]
project_id = models.ForeignKey(Project, on_delete=models.CASCADE)
customer_provider_relation_id = models.ForeignKey(CustomerProviderRelation, on_delete=models.CASCADE)
shortlisted=models.BooleanField(default=False)
state = models.CharField(max_length=20, choices=STATE_CHOICES)
workflow_run_id = models.ForeignKey(WorkflowRun, on_delete=models.CASCADE,default=None)
params = models.TextField()
delisted = models.BooleanField(default = False)
def __str__(self):
return f"ProjectProviders ID: {self.id}"
我尝试在 django shell 中运行查询,该查询返回结果,但我无法理解如何操作,我也参考了文档,但找不到这种类型或查询的名称或它是如何工作的。
埃什拉奎尔·哈克·里蒙 大学对我来说第一年 我的国家是孟加拉国吗 还有 Mymensingh 区、Bhaluka 区、 因特加特