我有一个 Python 模型,我想返回两个字段的组合:
category
+ name
。
唯一的是类别字段是一个关系,在类别表中,它是一个“名称”字段。请注意,
__str__
是名称。
示例:
类别表: id 1“热门”
产品表: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”
谢谢!
很明显,我们正在讨论 dajngo 管理问题
将方法更改为:
def __str__(self):
return '%s, %s' ( self.category.whatever-field-in-the-category-model, self.name)
您需要为 + 操作数提供 2 个字符串。所以
str(self.category) + self.name
就可以了。或者如果类别具有 self.category.name + self.name
属性,则可能是 name
。
请注意,访问 Category 对象可能会导致大量查询,从而使您的管理速度变慢。
此格式适用于+
return self.first_name + " " + self.last_name
要包含其他表中的字段,请使用 self.tablename.fieldname
return self.category.name + " " + self.name
也可以使用python字符串格式化方法。
return "{} {}".format(self.category, self.name)
您可以简单地将模型实例与 dunder 函数或有时称为魔术函数连接起来
改变
return self.category + self.name
至
return str('%s %s' % (self.category, self.name))