【发布时间】:2018-04-17 16:15:42
【问题描述】:
我在编辑 Product 模型对象时收到 __str__ returned non-string (type NoneType) 错误
产品型号
class Product(models.Model):
ProductName = models.CharField(blank=True, max_length=250)
Price = models.FloatField(blank=True, default=9.99)
Tax = models.FloatField(blank=True, null=True, default=0.0)
StoreId = models.IntegerField(blank=True, null=True)
RelatedStore = models.ForeignKey(Store, blank=True, null=True)
Category = models.CharField(max_length=200,
blank=True, null=True,
default='No Specific Category')
ProductImage = models.CharField(max_length=400, null=True, blank=True)
Features = models.TextField(blank=True, null=True)
ProductSize = models.IntegerField(blank=True, null=True, default=3)
FavoriteField = models.BooleanField(blank=True, default=False)
Active = models.BooleanField(blank=True, default=True)
def __unicode__(self):
return self.ProductName
def __str__(self):
return self.ProductName
任何有用的答案将不胜感激。
【问题讨论】:
-
在定义字段时不要使用 Pascal 大小写。使用小写或驼峰式
-
我会说,您的
{{ field.field }}不会调用Product.__str__。后者永远不应该返回None,因为您的模型字段中没有null=True。将import pdb; pdb.set_trace()添加到您的__str__方法中,然后浏览器应该 挂起并且运行runserver 的控制台应该打开一个调试提示,如果 方法被调用- 它非常可能不会 -
或者,进入
./manage.py shell,从 Products.models 中导入产品,找到产品并使用Product.objects.get(pk=400).__str__()显式调用str方法 -
@llja
Product.objects.get(pk=400).__str__()返回异常结果 ProductName -
请出示您的
RelatedStore型号和__str__方法。由于您使用的是 Python 3,因此您可以删除__unicode__。
标签: django python-3.x django-models