Django __str__ returned non-string (type NoneType)

筅森魡賤 提交于 2020-06-16 04:50:11

问题


I am getting __str__ returned non-string (type NoneType) error at edit Product Model object

Product Model

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

Any helpful answer will be appreciated.


回答1:


you can try:

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



回答2:


Please update the return value as follows

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

It is working fine for me. The code is given below,

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

Please make sure that the Model class mentioned in the ForeignKey field should be above the current model class name.




回答3:


I little late but change the return as follows:

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


来源:https://stackoverflow.com/questions/47121046/django-str-returned-non-string-type-nonetype

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!