我有一个Python模型,我想返回两个字段的组合:category
+ name
。
唯一的一点是类别字段是一种关系,而在类别表中,它是一个“名称”字段。请注意,__str__
是名称。
示例:
类别表: id 1 “hot”
产品表: id 1 “巧克力”
在Django-Admin (我除外):“热巧克力”
以下是代码:
class Product(models.Model):
name = models.CharField(_('product_name'), max_length=55)
image = models.CharField(_('product_image'),max_length=255)
description = models.CharField(_('product_description'), max_length=500)
price = models.DecimalField(_('product_price'), max_digits=4, decimal_places=2)
category = models.ForeignKey(Categorie, on_delete=models.CASCADE)
def __str__(selfProduct):
return self.category + self.name
错误如下:不支持的操作数类型+:'Categorie'和'str'
谢谢!
答案 0 :(得分:0)
你需要给+操作数2个字符串。所以str(self.category) + self.name
会起作用。如果类别具有self.category.name + self.name
属性,也可以name
。
请注意,访问Category对象可能会导致大量查询导致管理员运行缓慢。
答案 1 :(得分:0)
很明显,我们正在讨论dajngo管理员问题
将方法更改为:
def __str__(self):
return '%s, %s' % ( self.category.whatever-field-in-the-category-model, self.name)
答案 2 :(得分:0)
此格式可以使用+
return self.first_name + " " + self.last_name
要包含其他表中的字段,请使用self.tablename.fieldname
return self.category.name + " " + self.name
答案 3 :(得分:-1)
更改return self.category + self.name
致return str('%s %s' % (self.category, self.name))