【问题标题】:Django : return two string for self - AdminDjango:为自己返回两个字符串 - 管理员
【发布时间】:2016-10-13 04:10:15
【问题描述】:

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

谢谢!

【问题讨论】:

  • 这里的问题是什么?猜你需要self.category.name + self.name
  • @JoranBeasley 这返回一个非字符串
  • 您遇到错误了吗?请不仅向我们展示您的期望(即“热巧克力”),而且还向我们展示您不期望的实际输出。
  • 好的,现在我们已经接近了...self.category.name + self.name 猜测...或者str(self.category) + self.name 如果您在Category 类上重载了 str 函数

标签: python django django-models django-admin


【解决方案1】:

您需要给 + 操作数 2 个字符串。所以str(self.category) + self.name 会起作用。或者如果类别具有name 属性,则可能是self.category.name + self.name

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

【讨论】:

    【解决方案2】:

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

    更改方法为:

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

    【讨论】:

      【解决方案3】:

      这种格式使用 +

      return self.first_name + " " + self.last_name
      

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

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

      【讨论】:

        【解决方案4】:

        更改return self.category + self.name

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

        【讨论】:

          猜你喜欢
          • 2020-10-02
          • 2020-08-15
          • 2021-08-18
          • 2017-07-02
          • 2013-04-02
          • 1970-01-01
          • 2011-06-01
          • 1970-01-01
          • 2012-10-15
          相关资源
          最近更新 更多