TGViewer
murodalidev /> murodalidev /> @murodalidev · 800 subscribers
Post #643 1.53K
Ortiqcha if checklar yozishdan saqlaning.

Sizda ikki yoki undan ortiq fieldlar null bo'lsa ammo bittasini to'ldirish shart bo'lsa buni if bilan tekshirishingiz shart emas. Ortiqcha iflar dasturni sekinlashtiradi.
class Cart(models.Model):
user = models.OneToOneField(
User,
on_delete=models.CASCADE,
related_name="cart",
verbose_name=_("user"),
null=True,
blank=True,
help_text=_("User is null for guest carts"),
)
session_key = models.CharField(
_("session key"),
max_length=40,
blank=True,
null=True,
db_index=True,
help_text=_("Session key for guest carts"),
)
created_at = models.DateTimeField(_("created at"), auto_now_add=True)
updated_at = models.DateTimeField(_("updated at"), auto_now=True)


Bu vazifasini amalga oshirish uchun Django ORM darajasida DB darajasida cheklovlar qo'yish mumkin.
class Cart(models.Model):
....

class Meta:
....
constraints = [
models.CheckConstraint(
check=(
models.Q(user__isnull=False) | models.Q(session_key__isnull=False)
),
name="cart_must_have_user_or_session",
),
]


Bu constraint CheckConstraint bo‘lib, uning vazifasi - Cart jadvalidagi har bir yozuvda quyidagi shart bajarilishini ta’minlash:
user maydoni bo‘sh emas yoki session_key maydoni bo‘sh emas bo‘lishi kerak.


Djangoning migrate jarayonida bu constraint SQL CHECK sifatida bazaga qo‘shiladi:
ALTER TABLE cart
ADD CONSTRAINT cart_must_have_user_or_session
CHECK (user_id IS NOT NULL OR session_key IS NOT NULL);


Endi kimdir user=None va session_key=None bo‘lgan yozuv qo‘shsa, bazada xato (IntegrityError) yuz beradi.

@murodalidev
  • 🔥 6
  • ❤ 1
  • 😁 1
More from @murodalidev
  1. Jul 10, 2026Ma'lumotlar bilan ishlaganda eng katta muammo - tartibsizlik. Xom, tozalanmagan ma'lumotda…
  2. Jun 19, 2026Every challenge, every adversity, contains within it the seeds of opportunity and growth
  3. Feb 9, 2026ChatGPT: Create a caricature of me and my job based on everything you know about me. @muro…
  4. Dec 23, 2025Dasturchilar katta loyihalarni qilib boshlashganlarida bir qancha qiyinchiliklarda duch ke…
  5. Dec 18, 2025Hammaga salom👋 Odatda tez-tez so‘rovnoma yubormayman. Hozir AsyncIO [python] bo'yicha max…
  6. Nov 17, 2025Data Science 21-asrning eng yaxshi kasbi ekan, o'qinglar!) @murodalidev
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →