如果有任何项目实例不在某个项目列表中,我试图过滤掉 Quotation 模型中的实例。从 ProjectItem 模型中检索特定的项目列表。模型结构如下,我会在代码后面详细解释。
models.py
class SalesProject(models.Model):
sales_project_id = models.AutoField(primary_key=True)
sales_project_name = models.CharField(max_length=100)
class ProjectItem(models.Model):
project_item_id = models.AutoField(primary_key=True)
project = models.ForeignKey('SalesProject', related_name='items', on_delete=models.CASCADE)
item = models.ForeignKey('Item', on_delete=models.CASCADE)
remarks = models.TextField(max_length=1000)
class Quotation(models.Model):
quotation_id = models.AutoField(primary_key=True)
salesProject = models.ForeignKey(
'SalesProject', related_name='quotations', on_delete=models.CASCADE, null=True, blank=True)
details = models.TextField(max_length=1000, blank=True, null=True)
class QuotationItem(models.Model):
quotation_item_id = models.AutoField(primary_key=True)
item = models.ForeignKey('Item', on_delete=models.CASCADE, null=True, blank=True)
quotation = models.ForeignKey('Quotation', on_delete=models.CASCADE, related_name='items', null=True, blank=True)
remarks = models.TextField(max_length=1000)
class Item(models.Model):
item_id = models.AutoField(primary_key=True)
item_code = models.CharField(max_length=500, null=True, blank=True)
item_description = models.TextField(max_length=1000, null=True, blank=True)
首先,我将通过查询当前的 SalesProject 来获取 Item 实例的列表。(其中项目 = SalesProject 实例)
items = ProjectItem.objects.filter(project=project).values_list('item', flat=True)
基本上,此项目列表中的项目实例是各种“允许的项目”。我想要返回的是仅包含此列表中的 Item 实例的所有 Quotation 实例(或排除包含此列表之外的 Item 实例的任何 Quotation 实例)。Quotation 与 Item 的关系是通过 QuotationItem 模型实现的。有什么办法吗?
感谢大家的帮助,请指导我,如果信息不足请告诉我。
慕丝7291255
相关分类