我的模型非常简单 -
> class Item(TimeStampedModel):
item_name = models.CharField("Item name", max_length=100)
item_urlname = models.CharField("Item url name", null=True, blank=True, max_length=200)
item_date = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True, max_length=100)
standard = models.ManyToManyField(Standard, blank = True, null = True)
item_type = models.CharField("Item Type", choices=ITEM_TYPES, max_length=5, default='P')
我为它保存了覆盖 -
def save(self, *args, **kwargs):
try:
url_nosymbols = re.sub(r'[^A-Za-z0-9 ]', '', self.item_name.lower())
url = url_nosymbols.replace(' ','_')
self.item_urlname = url
super(Item, self).save(*args, **kwargs)
except:
raise
现在,当我尝试使用shell_plus保存Item时(Item对象与所有其他对象一起导入),它失败并出现奇怪的错误 - 属性错误 - 'NoneType'对象没有属性'sub'< /强>
>import re
>item = Item(item_name='my testing', item_date=datetime.now().date(), item_type='C')
>item.save()
>url_nosymbols = re.sub(r'[^A-Za-z0-9 ]', '', self.item_name.lower())
*** AttributeError: 'NoneType' object has no attribute 'sub'
即使我检查self是Item对象,它确实存在 -
(Pdb) self
<Init: my testing>
(Pdb) type(self)
<class 'items.models.Item'>
(Pdb) self.item_name
'my testing'
我觉得,还有一些其他错误,但它没有抛出实际错误。我看到这个确切的错误消息在其他堆栈溢出线程上被问了几个问题,虽然我无法与我的场景相关联。
提前感谢您的帮助。如有任何其他问题,请发表评论,我会尝试提供相关信息。