0

多対多オブジェクトの ID を取得するにはどうすればよいですか? メディア、画像、スライドショーの 3 つのモデルがあります。スライドショー オブジェクトからメディアの ID を取得するにはどうすればよいですか?

class Media(models.Model):
    CONTENT_TYPE_CHOICES = (
        ('photos', _('Photos')),
        ('videos', _('Videos')),
        ('audio', _('Audio')),
        ('Object360', _('360 Object')),
        ('Object3D', _('3D Object')),

    )


    source = models.FileField(upload_to='magazine')
    filename = models.CharField(max_length=50)
    content_type = models.CharField(max_length=10, choices=CONTENT_TYPE_CHOICES)
    created = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = _('Media')
        verbose_name_plural = _('Media')

class ImageComponent(BaseComponent):
    media = models.ForeignKey(Media)
    is_embed = models.BooleanField(default=True)
    is_slideshow =models.BooleanField(default=False)

    def __unicode__(self):
        return u'Image Component'


class SlideshowComponent(BaseComponent):
    image = models.ManyToManyField(ImageComponent)
    is_autoplay = models.BooleanField(default=True)
    is_embed = models.BooleanField(default=True)

    def __unicode__(self):
        return u'Slideshow Component'

私のview.pyには次のものがあります:slideshow = SlideshowComponent.objects.all() テンプレートで私は試します:

{% for slide in slideshow %}
{{ slide.image.media.id}}

しかし、動作しません..

編集:view.pyでmedia.idを介してスライドショーオブジェクトにアクセスするにはどうすればよいですか

4

1 に答える 1

2

まあ、それimageは ManyToManyField であるため、多くの画像にリンクしています (実際には「画像」と呼ばれる必要があります)。したがって、それを繰り返す必要があります。

{% for slide in slideshow %}
    {% for image in slide.image.all %}
    {{ image.media.id }}
    {% endfor %}
{% endfor %}
于 2012-06-11T17:02:31.757 に答える