2016-06-12 2 views
-1

У меня есть модель Python, и я хотел бы вернуть комбинацию из двух полей: category + name.Django: return two string for self - Admin

Единственное, что поле категории является отношением, а внутри таблицы категорий это поле «имя». Обратите внимание, что имя __str__.


Пример:

таблица Категория: ID 1 "горячий"

Таблица продукта: ID 1 "шоколад"

В Django- Администратор (wh в I кроме): "горячий шоколад"


Вот код:

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 

Ошибка заключается в следующем: неподдерживаемый тип операнда (ов) для +: 'Категория' и 'str'

Спасибо!

+0

В чем вопрос? при угадывании вам нужно 'self.category.name + self.name' –

+0

@JoranBeasley this return a non-string –

+0

Вы получаете сообщение об ошибке? пожалуйста, покажите нам не только то, что вы ожидаете (например, «Горячий шоколад»), но и то, что ваш фактический результат вы не ожидаете. –

ответ

0

Вам нужно указать + операнд 2 строки. Так будет работать str(self.category) + self.name. Или, возможно, self.category.name + self.name, если категория имеет атрибут name.

Знайте, что доступ к объекту Category может вызвать много запросов, которые замедляют ваш администратор.