python - __str__ 返回非字符串(产品类型)
问题描述
当我尝试在我的 Django 项目中添加 OrderItem 时,我收到了 __ str __ 返回的非字符串(产品类型)
模型.py:
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
date_ordered = models.DateField(auto_now_add=True, blank=True, null=True)
complete = models.BooleanField(default=False)
transaction_id = models.CharField(max_length=100, null=True)
def __str__(self):
return self.transaction_id
class OrderItem(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
def __str__(self):
return self.product
class Product(models.Model):
name = models.CharField(max_length=200, null=True)
price = models.FloatField()
image = models.ImageField(null=True, blank=True)
tag = models.ForeignKey(Tag, on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return str(self.name)
@property
def imageUrl(self):
try:
url = self.image.url
except:
url =''
return url
管理员.py:
admin.site.register(Customer)
admin.site.register(Product)
admin.site.register(Order)
admin.site.register(Tag)
admin.site.register(OrderItem)
当我尝试这个时,我得到了同样的错误:
class Product(models.Model):
name = models.CharField(max_length=200, null=True)
price = models.FloatField()
image = models.ImageField(null=True, blank=True)
tag = models.ForeignKey(Tag, on_delete=models.CASCADE, blank=True, null=True)
def __str__(self):
return 'test'
有时当我尝试添加/删除项目(在订单、订单项目、产品中)时出现此错误
解决方案
问题不是类的__str__
方法Product
,而是类的__str__
方法OrderItem
。self.product
不是字符串,而是Product
对象,所以不能在__str__
方法中返回 this。例如,您可以退回str(…)
产品的:
class OrderItem(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(default=1)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
def __str__(self):
return str(self.product)
推荐阅读
- c++ - 指针是否需要指向分配的类数组中的第一个对象才能使用'delete [] ptrName'?
- python-3.x - Pytorch 线性层现在自动重塑输入?
- c++ - 从现有的柯南项目中导出所有依赖项的源代码
- javascript - 在页面加载时加载文件并播放音频
- javascript - 如何将本地 setState 列表与 Redux 列表合并为一个列表 - redux react
- python - 显示没有属性的html标签
- swagger-ui - 如何隐藏 Swagger UI 中的模型部分?
- c - 如何将此汇编代码转换为内部代码?
- android - 使用在 andorid 中创建的应用程序拍摄的照片在保存时出现模糊
- angular - 如何设置 mat-chip 输入的最大芯片数?