Python 复杂的Django筛选,其中筛选参数涉及比较两个不同的foreignkey模型
使用以下模型,想象五个容量实例,每个实例与每个用户和每个问题实例关联,为每个问题的每个容量提供独立的问题容量值,并为每个用户的每个容量提供用户容量值 我想生成一个问题实例的查询集,并对其进行过滤,只留下问题实例,其中对于每个容量,关联的问题容量值小于与该问题关联的每个容量实例中的用户容量值 换言之,每个问题将有5个问题容量值,用户将有5个用户容量值,我想排除对于每个容量,问题容量值小于用户容量值的问题Python 复杂的Django筛选,其中筛选参数涉及比较两个不同的foreignkey模型,python,django,django-models,filtering,models,Python,Django,Django Models,Filtering,Models,使用以下模型,想象五个容量实例,每个实例与每个用户和每个问题实例关联,为每个问题的每个容量提供独立的问题容量值,并为每个用户的每个容量提供用户容量值 我想生成一个问题实例的查询集,并对其进行过滤,只留下问题实例,其中对于每个容量,关联的问题容量值小于与该问题关联的每个容量实例中的用户容量值 换言之,每个问题将有5个问题容量值,用户将有5个用户容量值,我想排除对于每个容量,问题容量值小于用户容量值的问题 class Question(models.Model): question = m
class Question(models.Model):
question = models.CharField(max_length=200, blank=True)
class Capacity(models.Model):
capacity_name = models.CharField(max_length=100)
def __str__(self):
return str(self.capacity_name)
class UserCapacityValue(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
capacity = models.OneToOneField(Capacity, on_delete=models.CASCADE)
user_capacity_value = models.DecimalField(max_digits=5, decimal_places=3, default=0.000)
def __str__(self):
return str(self.user) + str(self.capacity.capacity_name) + str(self.user_capacity_value)
class QuestionCapacityValue(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
capacity = models.OneToOneField(Capacity, on_delete=models.CASCADE)
applicable = models.BooleanField(default=False)
question_capacity_value = models.DecimalField(max_digits=5, decimal_places=3, default=0.000)
def __str__(self):
return str(self.question) + str(self.capacity.capacity_name) + str(self.question_capacity_value)
唯一的初步想法(我很确定这是远远不够的)是:
不知道在F函数中放什么,想象一下,在这种情况下,只有当存在一对一关系而不是一对多关系时,这才有效
refined_quetion_qset = targetqset.objects.filter(questioncapacityvalue_set__question_capacity_value__lte=F('???'))