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

问题描述 投票:0回答:6

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

谢谢!

python django django-models django-admin
6个回答
1
投票

很明显,我们正在讨论 dajngo 管理问题

将方法更改为:

    def __str__(self):
        return '%s, %s' ( self.category.whatever-field-in-the-category-model, self.name)

0
投票

您需要为 + 操作数提供 2 个字符串。所以

str(self.category) + self.name
就可以了。或者如果类别具有
self.category.name + self.name
属性,则可能是
name

请注意,访问 Category 对象可能会导致大量查询,从而使您的管理速度变慢。


0
投票

此格式适用于+

return self.first_name + " " + self.last_name

要包含其他表中的字段,请使用 self.tablename.fieldname

return self.category.name + " " + self.name

0
投票

也可以使用python字符串格式化方法。

return "{} {}".format(self.category, self.name)

0
投票

您可以简单地将模型实例与 dunder 函数或有时称为魔术函数连接起来


-1
投票

改变

return self.category + self.name

return str('%s %s' % (self.category, self.name))

© www.soinside.com 2019 - 2024. All rights reserved.