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: каждый раз добавляем новую характеристику, выбираем из списка его свойство, и прописываем руками атрибут.
Читал еще решение:
добавляем поле в продукт как обычную строку. И в нее сохраняем как список все характеристики. В шаблоне - парсим, и выводим. А сохраняется все это дело через форму в админке. Конечно, это самый примитивный вариант, и использовать его никак не хочется. Плюс ко всему, будут сложности в редактировании и добавлении новых полей.