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/