Django:为自己返回两个字符串 - Admin

时间:2016-06-12 18:52:10

标签: python django django-models django-admin

我有一个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'

谢谢!

4 个答案:

答案 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))