@mr_drinkens89

Как вывести характеристики товара в django admin?

Имеется магазин электронной техники на django. Есть модель - Product, хранящая в себе информацию о товаре. У каждого продукта есть свои технические характеристики (процессор - тактовая частота, монитор - диагональ, жесткий диск - объем и т.д). В данный момент приходится для каждого товара заполнять поля "руками": выбираем параметр (например, монитор), пишем справа его описание. Добавляем еще параметр - и снова описание. И так для каждого товара.
Как сделать, чтоб, например, зайдя в карточку товара HP-530, можно выбрать группу "ноутбуки", сохранить - и вывелся некий шаблон полей (слева параметр, справа его описание)?
спасибо
  • Вопрос задан
  • 3801 просмотр
Пригласить эксперта
Ответы на вопрос 3
@denizen
Посмотрите в сторону django-eav - возможно подойдёт.
Ответ написан
@mr_drinkens89 Автор вопроса
class TechInfo(models.Model):
    title = models.CharField(_(u'заголовок'), max_length=255)

    def __unicode__(self):
        return  self.title

    class Meta:
        ordering = ('title',)

class ProductTechInfo(models.Model):
    """техническая информация для продуктов
    """
    product = models.ForeignKey(Product, verbose_name=_(u"товар"), related_name="techinfo")
    name = models.ForeignKey(TechInfo, verbose_name=_(u"имя"), related_name="name")
    value = models.TextField(_(u'значение'), blank=True)
    separator = models.BooleanField(_(u'заголовок?'), default=False)
    position = models.SmallIntegerField(_(u'позиция'), default=999)

    def __unicode__(self):
        return  u"%s" % (self.name)

    class Meta:
        ordering = ('position',)
        verbose_name = _(u'техническая информация')
        verbose_name_plural = _(u'техническая информация')

в модели ProductTechInfo есть ссылка на Product через product = models.ForeignKey(Product...).
В админке уже ProductTechInfo выводится как Inline: каждый раз добавляем новую характеристику, выбираем из списка его свойство, и прописываем руками атрибут.

Читал еще решение:
добавляем поле в продукт как обычную строку. И в нее сохраняем как список все характеристики. В шаблоне - парсим, и выводим. А сохраняется все это дело через форму в админке. Конечно, это самый примитивный вариант, и использовать его никак не хочется. Плюс ко всему, будут сложности в редактировании и добавлении новых полей.
Ответ написан
qmax
@qmax
программер
Возможно, вам нужно
https://docs.djangoproject.com/en/1.6/ref/contrib/...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы