Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么过滤时在Django中会看到重复的模型对象?python_Python_Django_Django Models_Django Queryset - Fatal编程技术网

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

为什么过滤时在Django中会看到重复的模型对象?python,python,django,django-models,django-queryset,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) ..

以下是第一个循环后的文件输出:

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=[,]
我已经提前检查过了,知道应该只有三个,但正如您所看到的,调试文本显示了四个

上述两个对象是相同的,一个是重复的。我知道这一点,因为当我试图将这四个对象传输到一个新的数据库时,会出现完整性错误

在日期上创建的对象是主键,所以两次看到相同的结果也是令人惊讶的,因为我认为会抛出错误,我现在意识到,也许你可能希望在查询集中重复相同的对象,这就是为什么没有错误,但我有点难以理解这里到底发生了什么

提前感谢您的帮助,非常感谢:)

试试这个:

db_filtered = [<model: model object>, <model: model object>, <model: model object>, <model: model object>]
无论如何,通过像您这样迭代
db\u对象
,您可以在多个迭代中迭代相同的
input\u address\u db
。我会这样做:

db_filtered = model.objects.filter(input_address_db=i.input_address_db).distinct()
试试这个:

db_filtered = [<model: model object>, <model: model object>, <model: model object>, <model: model object>]
无论如何,通过像您这样迭代
db\u对象
,您可以在多个迭代中迭代相同的
input\u address\u db
。我会这样做:

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

我很感谢大家对我的帮助,你的回答对我帮助很大,我只想澄清问题最终是什么-

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()
    ...
我通过将
txlist\u db
更改为主键解决了这个问题

事实证明,每次比特币网络告诉你的服务器你刚刚收到一些BTC,你实际上会很快连续收到大约六次信号,如此之快,事实上,即使我有这个模型-

class bitcoin_deposit(models.Model):
    input_address_db = models.CharField(max_length=34, null=False, blank=False)
    deposit_amount_db = models.DecimalField(max_digits=16, decimal_places=8, validators=[MaxValueValidator(21000000)])
    return_address_db = models.CharField(max_length=34, null=False, blank=False)
    confirmations_db = models.IntegerField(validators=[MinValueValidator(-1)])
    created_on_db = models.DateTimeField(primary_key=True, auto_now_add=True)
    updated_on_db = models.DateTimeField(auto_now=True)
    txlist_db = models.CharField(max_length=64, null=False, blank=False)
这是脚本中的第一行代码,其中
txlist
变量表示网络事务id-

class bitcoin_deposit_txlist(models.Model):
    txlist_db = models.CharField(max_length=64, null=False, blank=False)
令人惊讶的是,我仍然不止一次地录下了同一张唱片

以下是帮助我解决该问题的一些存款对象的值-

txlist = ''btc network transaction id''
if bitcoin_deposit_txlist.objects.filter(txlist_db=txlist).exists():
    exit()
else:
    bitcoin_deposit_txlist.objects.create(txlist_db=txlist)
[
{'return_address_db':u'mpfuafk8bi4vejvvv4whjear3yqvpox1yn','created_on_db':datetime.datetime(2014,8,7,8,8,3,478489,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,12,30,804646,tzinfo=),'Decimal_amount_db':十进制('0.1438451'))“确认书数据库”:1,“txlist数据库”:u'7fd82945b5b96ae4ff866b6689867038289b81ee947c8796007d3a9f1fa14b59”,“输入地址数据库”:u'MRCLFESBQQRG3ZKHWCJFVGSM4REVT2CL',
{'return_address_db':u'mmgC3dk3JRpCrS9UDS8QRHFokFd6N8bLz4','created_on_db':datetime.datetime(2014,8,7,8,3,491573,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,44,784596,tzinfo=),'Decimal_amount_db':十进制('1.13722512'))“确认数据库”:4,“txlist数据库”:u'3F9AD1A464CA33513F24F0E592744845B4EA04906AB0DF054EF6668160F58CB2”,“输入地址数据库”:u'MRCLFESBQQRG3ZKHWCJFVGSM4REVT2CL',
{'return_address_db':u'motq8oo7rcgmmxvvchgmbq5jtgnxjwa59','created_on_db':datetime.datetime(2014,8,7,8,8,28550850,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,31254955,tzinfo=),'Decimal_amount_db':十进制('0.42293583'))“确认数据库”:3,“txlist数据库”:u'B8E7E819C0AB1DBAE9AA06C3662E17EB3621749A4F72E8E8F1B991212F05971”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4RevT2CL',
{'return_address_db':u'motq8oo7rcgmmxvvchgmbq5jtgnxjwa59','created_on_db':datetime.datetime(2014,8,7,8,28,559947,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,31,165585,tzinfo=),'Decimal_amount_db':十进制('0.42293583'))“确认数据库”:3,“txlist数据库”:u'B8E7E819C0AB1DBAE9AA06C3662E17EB3621749A4F72E8E8F1B991212F05971”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4RevT2CL',
{'return_address_db':u'mzgA1rXEuV59Zho34o5Lvko6LFpV9hWUq8','created_on_db':datetime.datetime(2014,8,7,8,8,54666174,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,44837193,tzinfo=),'Decimal_amount_db':十进制('0.11976356')“确认书数据库”:4,“txlist数据库”:u'adbcfc5b70621bde28ba4f073eca7a12e70533fb57e617ddbce013b4f6bc063b”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4REVT2CL},
{'return_address_db':u'mzgA1rXEuV59Zho34o5Lvko6LFpV9hWUq8','created_on_db':datetime.datetime(2014,8,7,8,8,54678403,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,31293935,tzinfo=),'Decimal_amount_db':十进制('0.11976356')“确认书数据库”:3,“txlist数据库”:u'adbcfc5b70621bde28ba4f073eca7a12e70533fb57e617ddbce013b4f6bc063b”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4REVT2CL},
{'return_address_db':u'mzgA1rXEuV59Zho34o5Lvko6LFpV9hWUq8','created_on_db':datetime.datetime(2014,8,7,8,8,54688175,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,15,53125196,tzinfo=),'Decimal_amount_db':十进制('0.11976356')“确认数据库”:2,“txlist数据库”:u'ADBCFC5B70621BDE28BA4F073ECA7A12E70533FB57E617DDBCE013B4F6BC063B3B”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4REVT2CL},
{'return_address_db':u'mzgA1rXEuV59Zho34o5Lvko6LFpV9hWUq8','created_on_db':datetime.datetime(2014,8,7,8,8,54695733,tzinfo=),'updated_on_on_db':datetime.datetime(2014,8,7,8,20,44611634,tzinfo=),'Decimal_amount_db':十进制('0.11976356')“确认书数据库”:4,“txlist数据库”:u'adbcfc5b70621bde28ba4f073eca7a12e70533fb57e617ddbce013b4f6bc063b”,“输入地址数据库”:u'MRCLFESBQQRG3ZQKHWCJFVGSM4REVT2CL}
]
请注意,在数据库上创建的
字段值有多接近


再次感谢:)

我感谢大家对我的帮助,你的回答对我帮助很大,我只想澄清问题最终是什么-

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()
    ...
我通过将
txlist\u db
更改为主键解决了这个问题

事实证明,每次比特币网络告诉你的服务器你刚刚收到一些BTC,你实际上会很快连续收到大约六次信号,如此之快,事实上,即使我有这个模型