如何反向检查对象是否存在于多对多 django 中?

Sixovov947

我有两个模型:

Model Student:
     name = models.CharField()
     ..... ....
     wishlist = models.ManyToManyField(University, blank=True)

Model University:
      name = models.CharField()
      ...... . .. . . . .

基本上我只是创建一个用户可以喜欢的大学的愿望清单,然后将其添加到他们的愿望清单中!(我通过心形图标表达了这一点),因此当用户重新单击同一项目时,它会将其从心愿单中删除,就是这样!

问题是,如何检查用户是否喜欢某所大学?

这是我的代码:

def index(request):
    univesity = University.objects.filter(is_approved=True)
    context = {'univesity': univesity}
    return render(request, 'search/index.html', context)

以上是我为搜索目的获取所有大学的地方!在此我需要检查用户是否已将大学添加到愿望清单关系中。如果它是真的,那么心形图标将变成红色,否则为空颜色!

现在这就是我在模板上的显示方式

{% if data.student_set.all %}
     <button><em class="icon ni ni-heart-fill" ></em></button>
{% else %}
     <button><em class="icon ni ni-heart"></em></button>
{% endif %}

它不像我预期的那样工作!请指导

威廉·范·翁塞姆

您可以通过Universities使用Exists子查询 [Django-doc]注释来检查该人是否喜欢一所大学

from django.contrib.auth.decorators import login_required
from django.db.models import Exists, OuterRef

@login_required
def index(request):
    universities = University.objects.annotate(
        liked=Exists(Student.wishlist.through.objects.filter(
            student=request.user, university_id=OuterRef('pk')
        ))
    ).filter(is_approved=True)
    context = {'universities': universities}
    return render(request, 'search/index.html', context)

如果Student是用户模型。如果不是这种情况,您首先应该获取登录的用户,并在.filter(student=…, …)部分中使用它

然后我们可以在模板中渲染它:

{% for university in universities %}
    {{ university }}
    {% if university.liked %}
        <button><em class="icon ni ni-heart-fill" ></em></button>
    {% else %}
         <button><em class="icon ni ni-heart"></em></button>
    {% endif %}
{% endfor %}

注意:您可以使用@login_required装饰器 [Django-doc]将视图限制为经过身份验证的用户的视图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查对象是否存在于属性中

检查对象是否存在于数组中

如何检查对象是否存在于Angular中的对象数组中

如何检查对象是否存在于多个数组中

如何使用JSON检查对象是否存在于JSON中

在SOAP请求中设置对象的值之前,如何检查对象是否存在于数组中?

如何使用JS检查对象是否存在于另一个对象中

Javascript-检查对象是否存在于对象数组中并更新数量

如何检查对象是否存在于数组中并在AngularJS中为其提供ng-class

如何检查类是否已存在于 Django 中?

检查对象是否存在于指定路径的多级列表中

Typescript:按值检查对象是否存在于数组中

JAVA NullPointerException:检查对象是否存在于数组中?

推入之前检查对象是否存在于数组中

检查对象是否已存在于集合中-Laravel

想要检查对象是否存在于数组中

检查对象是否已存在于 manytomany 字段中

如何检查对象属性是否也存在于另一个对象中?

检查对象是否存在于另一个模型外键字段中

如何使用javascript检查子对象是否存在于对象数组中?

如何使用Java检查指定对象是否存在于给定对象列表中

检查 Django 中是否存在多对多?

C ++:如何检查具有特定属性的对象是否存在于集合中

Django如何检查对象是否在多个字段中包含字符串

在添加对象之前,如何检查具有相同ID的对象是否已存在于对象列表中?

PHP-通过对needle的所有属性进行比较来检查对象是否存在于对象数组中

如何检查多对多字段中是否存在Django用户?

如何检查具有相同ID(或任何其他attribute)的对象是否存在于对象数组中?

如何检查当前数组中的对象是否存在于前一个数组中