使用以下模型,设想五个容量实例,每个容量实例与每个用户和每个问题实例相关联,为每个问题的每个容量提供独立的question_capacity_value,为每个用户的每个容量提供user_capacity_value。
我想生成一个Question实例的查询集,并将其过滤为只留下Question实例,其中每个容量的关联question_capacity_value小于与该问题关联的每个容量实例中的user_capacity_value。
换句话说,每个问题将有5个question_capacity值,用户将有5个user_capacity值,我想排除问题,对于每个容量,question_capacity_values小于user_capacity_value。
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)
只有最初的想法(我非常肯定是离开的)是:
refined_quetion_qset = targetqset.objects.filter(questioncapacityvalue_set__question_capacity_value__lte=F('???'))
不知道在F函数中放入什么,并想象这只有在这种情况下存在一对一而不是一对多关系时才有效。