我试图更新我的模型,所以当通过admin检查BooleanField时,它会更新所有其他行以重置为False(0)。但是当我继续这样做时,它只返回以下TypeError:' bool'对象不可迭代
这是我的模特:
def transactions(account_id, start, finish)
return @transactions if @transactions
response = get_call('/Accounts/Statements/' + account_id.to_s + '/' + start + '/' + finish)
response = JSON.parse(response.body)
@transactions = response.map {|txn| Transaction.new(txn)}
end
我尝试使用名为make_primary()的自定义方法在save()期间更新行。感觉就像我需要做的事情一样超级简单明了。我是Django的新手,所以它有点学习曲线。
非常感谢任何帮助和建议。
谢谢:)
编辑:
这里要求的是我的追溯/错误。此外,我更新了我的代码以使用排除而错误已更改为:' long'对象不可迭代
class Contact(models.Model):
name = models.CharField(max_length=255)
telephone = models.CharField(max_length=255,blank=True)
email = models.CharField(max_length=255,blank=True)
primary_contact = models.BooleanField('Primary Contact')
def __unicode__(self):
return self.name
def make_primary(self):
Contact.objects.filter(id!=self.id).update(primary_contact=False)
def save(self, *args, **kwargs):
if (self.primary_contact == True):
self.make_primary()
super(Contact, self).save(*args, **kwargs)
答案 0 :(得分:5)
此行无效:
MyModel.objects.filter(id!=self.id)
当您执行id!=self.id
时,表达式的计算结果为False
,因此它与执行filter(False)
相同。这是不可迭代的bool对象'在您的追溯讯息中,它实际上与您的BooleanField
无关。
执行filter(id=self.id)
时,您将关键字参数传递给filter
方法。 Django没有办法在过滤器中不等于关键字参数。您可以改为使用exclude()
。
MyModel.objects.exclude(id=self.id)