私は非常に単純なモデルを持っています -
> 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'
自分自身をチェックするとアイテムオブジェクトであり、存在する場合でも-
(Pdb) self
<Init: my testing>
(Pdb) type(self)
<class 'items.models.Item'>
(Pdb) self.item_name
'my testing'
他にもエラーがあるような気がしますが、実際のエラーはスローされません。この正確なエラー メッセージは、他のスタック オーバーフロー スレッドに関するいくつかの質問に対して尋ねられていることがわかりますが、私のシナリオに関連することはできません。
助けてくれてありがとう。追加の質問がある場合は、コメントでお知らせください。情報を提供できるように努めます。