Mohssen A Mohssen نشر 1 مارس 2022 أرسل تقرير نشر 1 مارس 2022 لدي بعض البيانات في ملف CSV وأريد استيرادها إلى نماذج model في جانغو Django ، هنا شكل البيانات التي أريد إستيرادها: 1;"product_1";"20.59";"product description"; 2;"product_2";"29.99";"product description"; 3;"product_3";"18.25";"product description"; 4;"product_4";"37.50";"product description"; لدي نموذج باسم Product. وأريد أن أقوم بإستيراد ملف CSV السابق إلى الحقول الموجودة في النموذج مثل الاسم name والوصف description والسعر price كيف أقوم بهذا الأمر؟ 1 اقتباس
1 مسعود زاهي نشر 1 مارس 2022 أرسل تقرير نشر 1 مارس 2022 يُمكنك إنشاء أمر في جانغو يقوم بقراءة ملف ال CSV وإدخال المعلومات داخل النموذج Product. لإنشاء الأمر نقوم بإنشاء مجلد داخل تطبيق جانغو ونقوم بتسميته management، داخل هذا المجلد نقوم بإنشاء مجلد آخر اسمه commands، وبداخله نقوم بإنشاء ملف بايثون يحمل الإسم insert_products_from_csv.py. نقوم بوضع هذه الشفرة داخل الملف. from django.core.management.base import BaseCommand import csv class Command(BaseCommand): help = 'إنشاء كائنات إنطلاقاً من ملف csv' def add_arguments(self, parser): parser.add_argument('--path', type=str, help="مسار الملف") def handle(self, *args, **options): # نجلب مسار الملف file_path = options['path'] # نقرأ الملف with open(file_path, 'rb') as csv_file: reader = csv.reader(csv_file, delimiter=';') for row in reader: # نستخرج معلومات المُنتج من كل سطر product_id = row[0] product_name = row[1] product_price = row[2] product_description = row[3] # نحفظ المعلومات في النموذج person, created = Person.objects.update_or_create( id=product_id, name=product_name, price=product_price, description=product_description ) لتشغيل الأمر نكتب python manage.py insert_products_from_csv --path "هنا نضع مسار الملف كاملاً" 2 اقتباس
1 Bassam Ahmed3 نشر 1 مارس 2022 أرسل تقرير نشر 1 مارس 2022 هناك مكتبة كاملة في django تقوم بذلك الأمر و هي django import export يمكن تثبيتها عن طريق الأمر التالي في موجة الأوامر بعد تفعيل البيئة الإفتراضية virtualenv pip install django-import-export ثم قم بإضافة المكتبه كتطبيق ضمن التطبيقات المثبته في المشروع بملف settings.py داخل خانة INSTALLED_APPS 'import_export' قم بالتوجه لملف admin.py داخل التطبيق الذي يوجد به النموذج المراد تصدير أو إستيراد البيانات له ثم قم بإستيراد السطر التالي لإستدعاء مكتبة import export from import_export.admin import ImportExportModelAdmin و لكن في تلك الحاله لا يمكن تسجيل النموذج بالشكل الإفتراضي الخاص به حيثُ يجب تغيير طريقة تسجيلة على سبيل المثال أريد تسجيل النموذج Volunteering في ملف admin.py حيثُ نقوم بتسجيله بالشكل التالي بالطريقة الإفتراضية from django.contrib import admin from .models import Volunteering from import_export.admin import ImportExportModelAdmin admin.site.register(Volunteering) لكن في حال أردت إستخدام مكتبة import export يجب تعديل طريقة التسجيل لتكن بالشكل التالي : from django.contrib import admin from .models import Volunteering from import_export.admin import ImportExportModelAdmin @admin.register(Volunteering) class VolImportExport(ImportExportModelAdmin): pass ملحوظه : يمكن تعديل إسم الـ class بالإسم الذي تريد فهو متغير أما ما بين الأقواس فهو ثابت كذلك ال decorator فوق ال class ثابت أيضاً ثم تقوم بفتح لوحة تحكم الموقع الخاص بك بشكل إفتراضي ثم تتجه للنموذج الذي تريد فيه استدعاء به مكتبة import export فستجد بجانب " إضافة " انه ظهر أزرار جديده " تصدير , إستيراد " مثل الصورة المرفقة حيثُ يمكنك تصدير او استيراد البيانات للنموذج مباشرة عن طريق العديد من الصيغ مثل csv , xls , xlsx , json , yaml و غيرها الكثير 1 اقتباس
السؤال
Mohssen A Mohssen
لدي بعض البيانات في ملف CSV وأريد استيرادها إلى نماذج model في جانغو Django ، هنا شكل البيانات التي أريد إستيرادها:
لدي نموذج باسم Product. وأريد أن أقوم بإستيراد ملف CSV السابق إلى الحقول الموجودة في النموذج مثل الاسم name والوصف description والسعر price
كيف أقوم بهذا الأمر؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.