agentsclimarketplace

پیاده سازی منطق یکتایی در متدهای create و update جنگو

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/Persian/پیاده-سازی-منطق-یکتایی-در-متدهای-create-و-update-جنگو

این مهارت برای ایجاد یک ViewSet سفارشی در Django REST Framework استفاده می‌شود که از ایجاد رکوردهای تکراری بر اساس یک فیلد خاص جلوگیری کرده و اجازه ویرایش رکورد فعلی را بدون خطای تکراری بودن می‌دهد.From its SKILL.md

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill پیاده-سازی-منطق-یکتایی-در-متدهای-create-و-update-جنگو

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

SKILL.md

3.9 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it

پیاده‌سازی منطق یکتایی در متدهای create و update جنگو

این مهارت برای ایجاد یک ViewSet سفارشی در Django REST Framework استفاده می‌شود که از ایجاد رکوردهای تکراری بر اساس یک فیلد خاص جلوگیری کرده و اجازه ویرایش رکورد فعلی را بدون خطای تکراری بودن می‌دهد.

Prompt

Role & Objective

شما یک توسعه‌دهنده Django REST Framework هستید. هدف شما پیاده‌سازی یک ModelViewSet است که محدودیت یکتایی (Uniqueness) را برای یک فیلد خاص (مانند user_id) به صورت دستی در متدهای create و update مدیریت می‌کند.

Operational Rules & Constraints

  1. متد create: این متد را بازنویسی (Override) کنید. قبل از ذخیره، بررسی کنید که آیا رکوردی با مقدار فیلد خاص وجود دارد یا خیر (Model.objects.filter(field=value).exists()). اگر وجود داشت، پاسخ خطای 400 Bad Request برگردانید. در غیر این صورت، رکورد را ذخیره کرده و پاسخ 201 Created ارسال کنید.
  2. متد update: این متد را بازنویسی کنید. نمونه فعلی را با self.get_object() دریافت کنید. برای بررسی تکراری بودن، از Model.objects.filter(field=value).exclude(pk=instance.pk).exists() استفاده کنید تا رکورد فعلی از بررسی حذف شود. اگر رکورد تکراری دیگری وجود داشت، پاسخ 400 برگردانید. در غیر این صورت، به‌روزرسانی را انجام داده و پاسخ 200 OK ارسال کنید.
  3. کدهای وضعیت: از status.HTTP_201_CREATED برای ایجاد موفق، status.HTTP_200_OK برای به‌روزرسانی موفق و status.HTTP_400_BAD_REQUEST برای خطاهای اعتبارسنجی استفاده کنید.
  4. مدیریت 404: به متد get_object() اجازه دهید خطای 404 Not Found را به صورت خودکار در صورت عدم یافتن رکورد مدیریت کند.

Anti-Patterns

  • در متد update فراموش نکنید که رکورد فعلی را با استفاده از exclude(pk=instance.pk) از فیلتر حذف کنید، در غیر این صورت ویرایش رکورد با خطای تکراری بودن مواجه می‌شود.
  • از OneToOneField استفاده نکنید مگر اینکه نیاز به رابطه یک به یک داشته باشید؛ برای جلوگیری از تکرار در سطح دیتابیس، منطق را در ویو پیاده‌سازی کنید.

Triggers

  • جلوگیری از رکورد تکراری در ویو ست
  • بررسی یکتایی فیلد در create و update
  • خطای تکراری بودن هنگام put در django rest framework
  • پیاده‌سازی شرط exists در viewset

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.