জ্যাঙ্গো কোনও প্রশ্নের জন্য কোনও উপস্থিতির জন্য চেক করুন


88

জ্যাঙ্গোতে কীভাবে কোনও প্রশ্নের জন্য কোনও প্রবেশিকা বিদ্যমান কিনা তা পরীক্ষা করে দেখুন

sc=scorm.objects.filter(Header__id=qp.id)

এইভাবে এটি পিএইচপি মধ্যে করা হয়েছিল

if(mysql_num_rows($resultn)) {
    // True condition
    }
else {
    // False condition
    }

উত্তর:


89

ব্যবহার count():

sc=scorm.objects.filter(Header__id=qp.id)

if sc.count() > 0:
   ...

উদাহরণস্বরূপ সুবিধাটি len()হল, ক্যোরিসেটটি এখনও মূল্যায়ন করা হয়নি:

count()SELECT COUNT(*)পর্দার পিছনে একটি কার্য সম্পাদন করে , তাই count() পাইথন অবজেক্টগুলিতে সমস্ত রেকর্ড লোড করা len() এবং ফলাফলটি কল করার চেয়ে আপনার সর্বদা ব্যবহার করা উচিত ।

এটি মাথায় রেখে , যখন ক্যোয়ারীসেটগুলি মূল্যায়ন করা হয় তখন পঠনযোগ্য


আপনি যদি get()উদাহরণস্বরূপ ব্যবহার করেন scorm.objects.get(pk=someid)এবং অবজেক্টটি উপস্থিত না থেকে একটি ObjectDoesNotExistব্যতিক্রম উত্থাপিত হয়:

from django.core.exceptions import ObjectDoesNotExist
try:
    sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
    print ...

আপডেট: এটি ব্যবহার করাও সম্ভব exists():

if scorm.objects.filter(Header__id=qp.id).exists():
    ....

ফেরত পাঠায় Trueযদি QuerySet কোনো ফলাফল রয়েছে এবং Falseযদি না। এটি কোয়েরিটি সহজতম এবং দ্রুততম উপায়ে সম্পন্ন করার চেষ্টা করে , তবে এটি একটি সাধারণ ক্যোরিসেট ক্যোয়ারী হিসাবে প্রায় একই ক্যোরিয়াকে কার্যকর করে।


52
if scorm.objects.filter(Header__id=qp.id).exists()
আলেকজান্ডার লেবেদেভ

@ অ্যালেক্স লেবেদেভ: হ্যাঁ, এই পদ্ধতিটি জাঙ্গো ১.২ এ উপলব্ধ হবে। ধন্যবাদ.
ফেলিক্স ক্লিং

185

জ্যাঙ্গো ১.২ হিসাবে, আপনি ব্যবহার করতে পারেন exists():

https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists

if some_queryset.filter(pk=entity_id).exists():
    print("Entry contained in queryset")

25
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। উপস্থিত () সাধারণত গণনা () এর চেয়ে উল্লেখযোগ্যভাবে দ্রুত হয়।
frmdstryr

4
এটি .objects.get(pk=...)রুটের চেয়েও দ্রুত বলে মনে হচ্ছে
ব্র্যাড সলোমন

0

এই আমার জন্য কাজ!

যদি কিছু_কিউরিসেট.ওবজেক্টস.এল () উপস্থিত থাকে (): মুদ্রণ ("এই টেবিলটি খালি নেই")

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.