2013-06-24 2 views
2

Итак, у меня две модели; первый для сообщений и вторых фотографий. У каждого сообщения может быть много фотографий. & Я не уверен, как отношения «один ко многим» могут быть построены в джанго.Django Модели для 1: много отношений между сообщениями и фотографиями

Heres мои модели:

class Post(models.Model): 
    title = models.CharField(max_length=200) 
    description = models.TextField() 
    pub_date = models.DateTimeField('date published') 

class Photo(models.Model): 
    FILE_TYPE_CHOICES = (
     ('full', 'Full Width'), 
     ('half', 'Half Width') 
    )  

    title = models.CharField(max_length=200) 
    description = models.TextField() 
    photoType = models.CharField(max_length=16,choices = FILE_TYPE_CHOICES, default = 'full', blank = True) 
    imageFile = models.ImageField(upload_to='uploaded') 

    containedPost = models.ForeignKey('Post', related_name='photoPosts') 

Как я мог бы достичь правильного отношения и как бы я быть в состоянии получить доступ к посту & каждым из фотографий в шаблоне?

+0

Это должно работать, как есть, хотя 'related_name' будет более точным, если бы' postPhotos' или просто 'photos', так как это имя отношения, которое появляется на объекте 'Post'. Для остальной части вашего вопроса: * что вы пробовали? * – Hamish

+0

@Hamish с исправленным именем отношения я пробовал что-то вроде: {{post.postPhotos.0.title}} Я думаю, что это неправильно? – Callum

+2

@CallumBonnyman '{{post.postPhotos.all.0.title}}' или '{% для фотографии в post.postPhotos.all%} {{photo.title}} {% endfor%}' – Ngenator

ответ

0

МОДЕЛИ:

class Post(models.Model): 
    title = models.CharField(max_length=200) 
    description = models.TextField() 
    pub_date = models.DateTimeField('date published') 

    def __unicode__(self): 
     return self.title 

class Photo(models.Model): 
    title = models.CharField(max_length=200) 
    description = models.TextField() 
    FILE_TYPES = (
     ('full', 'Full Width'), 
     ('half', 'Half Width') 
    )  
    photo_type = models.CharField(max_length=4, choices=FILE_TYPES, default='full', blank=True) 
    imageFile = models.ImageField(upload_to='uploaded') 
    post = models.ForeignKey('Post') 

    def __unicode__(self): 
     return self.title 

ШАБЛОН:

{% for photo in post.photo_set %} 
    {{ photo }} 
{% endfor %} 
Смежные вопросы