شما این محصولات را انتخاب کرده اید

سبد خرید

استفاده کردن از فرم‌های پیشرفته‌تر مانند فرم‌های inline و formsets برای مدیریت چندین رکورد در یک بار ذخیره‌سازی در جنگو
شناسه پست: 8176
بازدید: 24

استفاده کردن از فرم‌های پیشرفته‌تر مانند فرم‌های inline و formsets برای مدیریت چندین رکورد در یک بار ذخیره‌سازی در جنگو

توضیحات:

استفاده از فرم‌های پیشرفته مانند فرم‌های inline و formsets در جنگو برای مدیریت چندین رکورد در یک بار ذخیره‌سازی بسیار مفید است.

در ادامه یک روش برای استفاده از فرم‌های inline و formsets برای مدیریت چندین رکورد در یک بار ذخیره‌سازی را شرح می‌دهم:

  1. استفاده از فرم‌های inline: فرم‌های inline به شما امکان می‌دهند تا یک رابط کاربری برای افزودن، ویرایش و حذف رکوردهای مرتبط با یک مدل ایجاد کنید. برای استفاده از فرم‌های inline، ابتدا باید در کلاس مدل خود یک فیلد مرتبط با مدل موردنظر ایجاد کنید، سپس از کلاس InlineModelAdmin برای ایجاد یک کلاس ادمین inline استفاده کنید.

  2. استفاده از formsets: فرم‌های formsets به شما امکان می‌دهند تا چندین فرم مرتبط با یک مدل را در یک بار ذخیره‌سازی مدیریت کنید، برای استفاده از formsets ابتدا باید از ماژول formsets جنگو import کنید، سپس یک کلاس فرم برای مدل موردنظر ایجاد کنید و از متد formset_factory برای ایجاد یک فرمست برای آن استفاده کنید.

به عنوان مثال، فرض کنید که یک مدل به نام Author و یک مدل به نام Book داریم که با یک رابطه یک به چند به هم مرتبط هستند. می‌توانیم از فرم‌های inline و formsets برای مدیریت کتاب‌های هر نویسنده در یک بار ذخیره‌سازی استفاده کنیم.

  1. ایجاد فرم inline برای مدل Book:
from django.contrib import admin
from .models import Author, Book

class BookInline(admin.TabularInline):
    model = Book

@admin.register(Author)
class AuthorAdmin(admin.ModelAdmin):
    inlines = [BookInline]
  1. استفاده از formsets برای مدیریت چندین کتاب برای هر نویسنده:
from django.forms import inlineformset_factory
from .models import Author, Book

BookFormSet = inlineformset_factory(Author, Book, fields=('title', 'publication_date'), extra=1)

def add_books(request, author_id):
    author = Author.objects.get(id=author_id)
    formset = BookFormSet(request.POST or None, instance=author)
    
    if request.method == 'POST' and formset.is_valid():
        formset.save()
        return redirect('author_detail', author_id=author_id)
    
    return render(request, 'add_books.html', {'formset': formset})

با انجام این مراحل، شما یک رابط کاربری پیشرفته برای مدیریت چندین رکورد مرتبط با یک مدل در یک بار ذخیره‌سازی ایجاد کرده‌اید. این روش به شما امکان می‌دهد تا به راحتی و با کمترین تلاش، اطلاعات مرتبط را مدیریت کنید و به راحتی اطلاعات را ویرایش، حذف و افزودن کنید.

موفق باشید

A.J

پست های مرتبط:

شما می‌توانید از سورس های آماده به راحتی و با کپی پیست در پروژه خود استفاده بفرمایید

بله! سورسا به عنوان اولین و برترین مرجع سورس کد های آماده، تمامی سورس کد ها در زبان های مختلف را به صورت رایگان در اختیار شما قرار می‌دهد.

اگر سورس مد نظر شما تفاوتی با سورس فعلی دارد یا اینکه درخواست سورس دیگری را دارید می‌توانید با کارشناسان سورسا در ارتباط باشید.

سورسا به عنوان مرجع سورس در تلاش است سورس کد ها و آموزش های تمامی زبان های برنامه نویسی مانند GO C++ Python C PHP SQL JS و… را تحت پوشش قرار داد

اشتراک در
اطلاع از
guest

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها