Django __str__返回非字符串(类型NoneType)

时间:2017-11-05 11:30:41

标签: django python-3.x django-models

我在编辑__str__ returned non-string (type NoneType)模型对象

时收到Product错误

enter image description here

产品型号

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

任何有用的答案都将不胜感激。

5 个答案:

答案 0 :(得分:1)

你可以尝试:

def __str__(self):
    return str(self.ProductName) if self.ProductName else ''

答案 1 :(得分:1)

我来晚了一点,但是改变了回报如下:

def __str__(self):
    return str(self.ProductName)

答案 2 :(得分:1)

__str__ returned non-string (type NoneType)

在您访问的模型或与其相关的其他模型在 def int 函数上返回 __str__ 值时返回。如果您要返回 int,请务必将该值解析为 String 选项。

def __str__(self):
    return str(self.id)

答案 3 :(得分:0)

请按以下方式更新返回值

def __str__(self):
    return self.RelatedStore.FieldNameInStoreModel 

对我来说很好。代码如下,

class tutorialInfo(models.Model):
    course_link = models.CharField(max_length=100)
    def __str__(self):
        return self.course_link
class courseDetails(models.Model):
    course_slug = models.ForeignKey(tutorialInfo,default=1,on_delete=models.SET_DEFAULT,verbose_name='Course')
    class Meta:
        verbose_name_plural = "Course"
    def __str__(self):
        return self.course_slug.course_link

请确保ForeignKey字段中提到的Model类应位于当前模型类名称的上方。

答案 4 :(得分:0)

问题出在Foregienkey上:

 RelatedStore = models.ForeignKey(Store, blank=True, null=True)

#edit or delete this:
    def __str__(self):
        return self.ProductName

或者检查Store类是否会有一些

def_str_(self):
 return self.something 

然后它将正常工作,我知道我迟到了,但是对我有用!