我有非常简单的模型 -
> 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 保存项目时(项目对象与所有其他对象一起导入),它失败并出现奇怪的错误 -属性错误 - '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'
我觉得,还有一些其他错误,但它没有引发实际错误。我看到这个确切的错误消息被问到关于其他堆栈溢出线程的几个问题,尽管我无法与我的场景相关联。
在此先感谢您的帮助。任何其他问题,请发表评论,我会尽力提供信息。