Django模型__str__方法不生效,无法显示产品名称求助
Django模型__str__方法不生效的解决办法
你的问题出在**__str__方法的缩进错误**——这个方法被定义在了Product类的外部,并没有成为类的成员方法,所以Django无法识别并调用它来替换默认的Product object (1)显示。
修正后的代码如下:
from cgi import print_exception from django.db import models from django.contrib.auth.models import User # Create your models here. class Product(models.Model): user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) name = models.CharField(max_length=200, null=True, blank=True) # image = category = models.CharField(max_length=200, null=True, blank=True) description = models.TextField(null=True, blank=True) rating = models.DecimalField( max_digits=7, decimal_places=2, null=True, blank=True) numReviews = models.IntegerField(null=True, blank=True, default=0) price = models.DecimalField( max_digits=7, decimal_places=2, null=True, blank=True) countInStock = models.IntegerField(null=True, blank=True, default=0) createdAt = models.DateTimeField(auto_now_add=True) _id = models.AutoField(primary_key=True, editable=False) # 注意缩进,需和类内其他字段/方法保持一致 def __str__(self): # 优化空值情况,避免显示None return self.name or f"Product {self._id}"
把__str__方法缩进后放到Product类内部,Django就能正常调用它,将对象显示为对应的产品名称。如果产品名称为空,上述代码会显示类似Product 1的内容,避免出现None的情况。
内容的提问来源于stack exchange,提问作者ToddM
相关产品推荐
相关产品推荐

