Django ForeignKey字段值中的边界和约束——以及它们如何影响queryset结果

Django ForeignKey字段值中的边界和约束——以及它们如何影响queryset结果,django,orm,django-models,one-to-many,django-database,Django,Orm,Django Models,One To Many,Django Database,例如,如果我的models.py如下所示: Handler(models.Model): model1 = ForeignKey(Model1) model2 = ForeigKey(Model2) user = models.ForeignKey(User) Handles.objects.filter(model1=1).values_list('model2_id', flat=True) 例如,有100个model1id=1的处理程序实例,但这100个实例的m

例如,如果我的models.py如下所示:

Handler(models.Model):
    model1 = ForeignKey(Model1)
    model2 = ForeigKey(Model2)
    user = models.ForeignKey(User)
Handles.objects.filter(model1=1).values_list('model2_id', flat=True)
例如,有100个model1id=1的处理程序实例,但这100个实例的model2id在1到5之间。当我这样做的时候:

Handler(models.Model):
    model1 = ForeignKey(Model1)
    model2 = ForeigKey(Model2)
    user = models.ForeignKey(User)
Handles.objects.filter(model1=1).values_list('model2_id', flat=True)
它返回5个id值的列表或100个id值的列表,这些值是重复的?
如果它返回100个值,那么对于每个重复的值是否可能只保留一个值?

它将返回100个id值的列表。 如果您想得到唯一的5个,那么可以在python中实现

model2_id_uniq_values = list(set(Handles.objects.filter(model1=1).values_list('model2_id', flat=True)))

它可能不是最精细的算法,如果使用集合,您将失去顺序。但出于您的目的,它似乎可以工作。

您可以启动Django shell,查看并立即调整查询。不,我不能。我收到类似django的错误。设置未定义,我无法。请从项目目录中使用
python manage.py shell
。raise ImportError(“无法导入设置,因为环境变量%s未定义”。%environment\u variable)ImportError:无法导入设置,因为环境变量DJANGO_SETTINGS_MODULE未定义。