【问题标题】:Django Rest Framework how to check an object is exists or not?Django Rest Framework 如何检查对象是否存在?
【发布时间】:2022-10-16 19:51:21
【问题描述】:

我正在尝试检查对象是否存在,这就是我的做法:

try:
    control = Card.objects.filter(cc_num = cc_number)[0]
    exists = True
except (IndexError):
    exists = False

它有效,但我想知道是否有更实用的方法?

(我使用except(IndexError) 的原因是我通过在model.objects.filter() 末尾键入[0] 来查找对象。)

注意:cc_num 是唯一的。

【问题讨论】:

  • 有很多方法可以在 Django 中检查对象的存在,但是,这在很大程度上取决于您在 DRF 中使用它的上下文。使用queryset 类属性或get_queryset 方法可以帮助您消除手动检查视图中是否存在对象的需要。您上面的代码也可能很有用,并且在这种情况下,control = Card.objects.filter(cc_num = cc_number).first() 控件可能是Card 对象的实例或无。

标签: django django-models django-rest-framework


【解决方案1】:

你可以这样做:

if model.objects.filter(email = email).exists():
    # at least one object satisfying query exists
else:
    # no object satisfying query exists

检查这个: https://docs.djangoproject.com/en/stable/ref/models/querysets/#django.db.models.query.QuerySet.exists

【讨论】:

    【解决方案2】:

    尝试这个: 使用 Card.objects.get() 因为 cc_num 是唯一的,如果存在则只会检索一个对象

    try:
        controls = Card.objects.get(cc_num == cc_number)
        #do something
    except DoesNotExist:
        #do something in case not
    

    https://www.codegrepper.com/code-examples/python/check+if+a+value+exist+in+a+model+Django

    【讨论】:

      【解决方案3】:

      你可以试试这样,导入这个

      from django.core.exceptions import ObjectDoesNotExist
      
      try:
         controls = Card.objects.get(cc_num == cc_number)
         #do something
      except ObjectDoesNotExist:
         #do something in case not
      

      【讨论】:

        猜你喜欢
        • 2017-05-13
        • 2022-07-22
        • 2021-06-23
        • 1970-01-01
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        相关资源
        最近更新 更多