问题
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