Привет, всем!
Первый проект на Django, да и опыт небольшой в разработке.
Возникла задача, никак решить не могу.
Возможно проблема в архитектуре моделей...
Нужно, чтобы в шаблоне циклом выводились item объекты. Также атрибуты его связанной модели photo (фото может быть несколько), и атрибуты модели tag, связанной с photo(объектов tag также будет несколько).
Простым языком: Есть контент (Item) который содержит одну или более фотографий. На каждой фотографии есть метки.
http://teleport.ink/index_a.html
Есть модели:
class Item(models.Model):
name = models.CharField(max_length=250, verbose_name='Название фотографий',blank=True)
user = models.ForeignKey(User)
url = models.URLField(max_length=1000, verbose_name='Ссылка')
class Meta:
verbose_name = 'Items'
verbose_name_plural = 'Item'
def __unicode__(self):
return u'%s %s %s' % (self.id, self.url, self.name)
class Photo(models.Model):
image = models.ImageField(upload_to='image', verbose_name='Фотография', blank=True)
item = models.ForeignKey(Item, related_name='items')
class Meta:
verbose_name = 'Фотографии'
verbose_name_plural = 'Фотография'
def __unicode__(self):
return u'%s %s' % (self.id, self.image)
class BrandName(models.Model):
name = models.CharField(max_length=250, verbose_name='Бренд')
class Meta:
verbose_name = 'Бренды'
verbose_name_plural = 'Бренд'
def __unicode__(self):
return self.name
class Tag(models.Model):
url = models.URLField(max_length=1000, verbose_name='Ссылка',blank=True)
brand_name = models.ForeignKey(BrandName, related_name='tags')
x_position = models.CharField(max_length=250, verbose_name='Позиция X')
y_position = models.CharField(max_length=250, verbose_name='Позиция Y')
z_position = models.IntegerField(verbose_name='Позиция Z',default=0)
photo = models.ForeignKey(Photo, related_name='photos')
class Meta:
verbose_name = 'Метки'
verbose_name_plural = 'Метка'
def __unicode__(self):
return u'%s %s' % (self.id, self.brand_name)
Есть View:
def index(request):
items = Item.objects.all()
photos = items.filter(photo__item_id__exact=items.id)
tags = photos.filter(tag__photo_id__exact=photos.id)
return render_to_response('index.html',{'items':items, 'photos':photos, 'tags':tags})
Есть шаблон:
{% for item in items %}
{{ item.name }}
{% for photo in photos %}
{% for tag in tags %}
{{ tag.url }}
{{ tag.x_position}}
{{ tag.y_position }}
{{ tag.brand_name.name }}
{% endfor %}
{% endfor %}
{% endfor %}
Буду благодарен, если поможете решить вопрос)
Спасибо!
Updated 2 Oct. 2014, 15:38 by makarow.dmitry.