Agent SkillsECNU-ICALK/AutoSkill › پیاده‌سازی منطق یکتایی در متدهای create و update جنگو

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

GitHub

实现Django REST Framework自定义ViewSet,在create和update方法中手动处理字段唯一性逻辑。通过查询排除当前实例防止编辑报错,确保业务层数据唯一性约束。

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

Trigger Scenarios

防止ViewSet中重复记录创建 自定义字段唯一性校验逻辑 解决DRF更新时的唯一性冲突 手动管理数据库唯一约束

Install

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

Non-standard path

npx skills add https://github.com/ECNU-ICALK/AutoSkill/tree/main/SkillBank/ConvSkill/Persian/پیاده-سازی-منطق-یکتایی-در-متدهای-create-و-update-جنگو -g -y

Use without installing

npx skills use ECNU-ICALK/AutoSkill@پیاده‌سازی منطق یکتایی در متدهای create و update جنگو

指定 Agent (Claude Code)

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

安装 repo 全部 skill

npx skills add ECNU-ICALK/AutoSkill --all -g -y

预览 repo 内 skill

npx skills add ECNU-ICALK/AutoSkill --list

SKILL.md

Frontmatter
{
    "id": "7228ae8a-6451-4b77-af85-599eb2aa4a3d",
    "name": "پیاده‌سازی منطق یکتایی در متدهای create و update جنگو",
    "tags": [
        "Django",
        "REST Framework",
        "ViewSet",
        "Validation",
        "Uniqueness"
    ],
    "version": "0.1.0",
    "triggers": [
        "جلوگیری از رکورد تکراری در ویو ست",
        "بررسی یکتایی فیلد در create و update",
        "خطای تکراری بودن هنگام put در django rest framework",
        "پیاده‌سازی شرط exists در viewset"
    ],
    "description": "این مهارت برای ایجاد یک ViewSet سفارشی در Django REST Framework استفاده می‌شود که از ایجاد رکوردهای تکراری بر اساس یک فیلد خاص جلوگیری کرده و اجازه ویرایش رکورد فعلی را بدون خطای تکراری بودن می‌دهد."
}

پیاده‌سازی منطق یکتایی در متدهای 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

Version History

  • 94c47ca Current 2026-07-24 12:38

Same Skill Collection

SkillBank/Common/anthropics-skill/algorithmic-art/SKILL.md
SkillBank/Common/anthropics-skill/brand-guidelines/SKILL.md
SkillBank/Common/anthropics-skill/canvas-design/SKILL.md
SkillBank/Common/anthropics-skill/doc-coauthoring/SKILL.md
SkillBank/Common/anthropics-skill/frontend-design/SKILL.md
SkillBank/Common/anthropics-skill/internal-comms/SKILL.md
SkillBank/Common/anthropics-skill/mcp-builder/SKILL.md
SkillBank/Common/anthropics-skill/pdf/SKILL.md
SkillBank/Common/anthropics-skill/skill-creator/SKILL.md
SkillBank/Common/anthropics-skill/slack-gif-creator/SKILL.md
SkillBank/Common/anthropics-skill/theme-factory/SKILL.md
SkillBank/Common/anthropics-skill/web-artifacts-builder/SKILL.md
SkillBank/Common/anthropics-skill/webapp-testing/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/artifacts-builder/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/brand-guidelines/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/canvas-design/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/changelog-generator/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/competitive-ads-extractor/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/connect-apps/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/connect/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/content-research-writer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/developer-growth-analysis/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/domain-name-brainstormer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/file-organizer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/image-enhancer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/internal-comms/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/invoice-organizer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/lead-research-assistant/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/mcp-builder/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/meeting-insights-analyzer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/raffle-winner-picker/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/slack-gif-creator/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/tailored-resume-generator/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/theme-factory/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/twitter-algorithm-optimizer/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/webapp-testing/SKILL.md
SkillBank/Common/AwesomeClaudeSkills/youtube-downloader/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-article-illustrator/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-comic/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-compress-image/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-cover-image/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-danger-gemini-web/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-danger-x-to-markdown/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-format-markdown/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-image-gen/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-infographic/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-markdown-to-html/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-post-to-wechat/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-post-to-x/SKILL.md
SkillBank/Common/baoyu-skills/baoyu-slide-deck/SKILL.md

Metadata

Files
0
Version
94c47ca
Hash
014479fb
Indexed
2026-07-24 12:38

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-08 07:44
浙ICP备14020137号-1 $bản đồ khách truy cập$