【问题标题】:django : how to use filter option in this case?django:在这种情况下如何使用过滤器选项?
【发布时间】:2017-11-26 21:35:53
【问题描述】:

我有一个问题 这是我的代码
视图.py

class testView(ListView):
    model = Photo
    template_name = 'photo/photo_detail.html'
    context_object_name = 'main_list'

    def get_context_data(self, **kwargs):
        context = super(testView, self).get_context_data(**kwargs)
        context['extra_value'] = Album.objects.filter(Album__name=Photo.album.name)
        return context

和model.py

class Album(models.Model):
    name = models.CharField(max_length=50)
    description = models.CharField('One Line Description', max_length=100, blank= True)
    owner = models.ForeignKey(User, null=True)
    Category = models.ForeignKey(Categories, null=True)
    price = models.CharField(max_length=20, null=True)
    productInfo = models.CharField(max_length=50, null=True)

    objects = models.Manager()
    second_manager = SecondAlbumManager()

    class Meta:
        ordering = ['name']
        verbose_name = 'Album'
        verbose_name_plural = 'Albums'

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('photo:album_detail', args=(self.id,))

@python_2_unicode_compatible
class Photo(models.Model):
        album = models.ForeignKey(Album)
        title = models.CharField(max_length=50)
        image = ThumbnailImageField(upload_to='photo/%Y/%m')
        description = models.TextField('Photo Description', blank=True)
        upload_date = models.DateTimeField('Upload Date', auto_now_add=True)
        owner = models.ForeignKey(User, null=True)

    class Meta:
        ordering = ['title']
        verbose_name = 'Photo'
        verbose_name_plural = 'Photos'

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('photo:test', args=(self.id,))

Photo 对象有 ForeignKey(Album) 所以,我想在模板中使用 Filtered Album 对象(photo_detail.html)

但是,我想将一个 Photo 对象的 Album 外部值与 Album__name 进行比较并将其输出到模板,但我不知道如何更改 Photo.album.name 部分。请告诉我。

【问题讨论】:

    标签: python django templates filter


    【解决方案1】:

    在模板中你可以简单的使用属性album,例如:

    {% for photo in  object_list %}
        {{ photo.album.name }} created by {{ photo.album.user.username }}
    {% endfor %}
    

    详情请阅读docs

    【讨论】:

    • 例如我的模板(w_cloth.html) url是"url(r'^test/(?P\d+)/$', testView.as_view(), name=' test')," ex)127.0.0.1:8000/photo/test/7 ,我如何在模板中使用 id=7 .. 我想在 url 中使用 id 来区分当前照片对象 ex) {% if photo.album.name == current.id In url %}
    • 很高兴为您提供帮助,如果解决方案对您有帮助,您应该接受它以供其他人搜索相同的问题,对于您的第二个问题,最好的方法是创建新的:在评论中很难阅读和理解。
    猜你喜欢
    • 2023-03-23
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2018-09-22
    • 2017-02-27
    • 1970-01-01
    相关资源
    最近更新 更多