python - 为什么我在过滤时会在 Django 中看到重复的模型对象? Python

标签 python django django-models django-queryset

file = open('debug.txt', 'w')
db_objects = model.objects.all()

    for i in db_objects:
        db_filtered = model.objects.filter(input_address_db=i.input_address_db)
        f.write('filtered_results = %s' % db_filtered)
        ...perform operations...

这是第一次循环后文件的输出:

db_filtered = [<model: model object>, <model: model object>, <model: model object>, <model: model object>]

虽然我提前检查并知道应该只有三个,但正如您所看到的调试文本显示四个。

上面的两个对象是同一个对象。我之所以知道这一点,是因为当我尝试将这四个对象传输到新数据库时遇到了完整性错误。

created_on 日期是主键,因此两次看到相同的结果也令人惊讶,因为我认为会抛出错误,我现在意识到也许您可能希望在查询集中重复相同的对象,这就是为什么没有错误,但我仍然无法理解这里实际发生的事情。

在此先感谢您的帮助,非常感谢:)

最佳答案

试试这个:

db_filtered = model.objects.filter(input_address_db=i.input_address_db).distinct()

无论如何,通过像您一样迭代 db_objects,您可以在多次迭代中迭代相同的 input_address_db。我会做类似的事情:

input_addess_dbs = set(d.input_address_db for d in model.objects.all())
for address in input_address_dbs:
    db_filtered = model.objects.filter(input_address_db=address).distinct()
    ...

关于python - 为什么我在过滤时会在 Django 中看到重复的模型对象? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157090/

相关文章:

python - Tensorflow:成本张量列表

django - 从 phonegap 中的外部提供的 html 页面访问 native 功能

python - 使用分页的 PyMongo 中光标太大的 MemoryError

python - 使用抽象类对多对多关系建模

python - Django FileField 存储选项

django - 如何将默认字段值设置为 Django 模型中其他字段的值?

python - 没有收到所有 ICMP 超时消息 : why?

python - 在 Azure Function (Python) 中将图形 API 与系统分配的托管标识结合使用

python - 在 Flask 模板中使用动态创建的标签渲染表

django - 如何在运行时检查Django中已安装应用程序的版本?