Adam Ebrahim نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 أرغب في تغيير اسم حقل معين في النموذج model في جانغو Django: class Foo(models.Model): name = models.CharField() يجب أن يتغير الحقل name إلى full_name كالتالي: class Foo(models.Model): full_name = models.CharField() كيف أقوم بذلك؟ 3 اقتباس
0 سامح أشرف نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 يمكنك أن تستخدم التابع db.rename_column لتغير اسم حقل معين، وذلك من خلال عمل ملف تهجير migration من خلال الأمر التالي: ./manage.py schemamigration myapp renaming_column_name --auto سيقوم الأمر السابق بتوليد ملف باسم myapp/migrations/000x_renaming_column_name.py، الآن يمكنك أن تستخدم التابع db.rename_column في هذا الملف على النحو التالي: class Migration: def forwards(self, orm): # تغير الحقل name إلى full_name db.rename_column('app_foo', 'name', 'full_name') def backwards(self, orm): # تغير الحقل full_name إلى name db.rename_column('app_foo', 'full_name', 'name') أول معامل في التابع db.rename_column هو اسم الجدول الذي يتحوي على الحقل الذي تريد تغيره. في حالة وجود اسم نموذج متعدد الكلمات و بحالة camel-cased، مثل FooBar ، فسيكون اسم الجدول app_foobar (حروف صغيرة وتفصل بين الكلمات بعلامة _ ،وهو ما يسمى snake-case). اقتباس
0 Ahmed Sharshar نشر 16 سبتمبر 2021 أرسل تقرير نشر 16 سبتمبر 2021 (معدل) في النسخ الحديث من django،يمكنك فعل هذا ببساطة باعادة تسمية الحقل دون احداث اي تغيير في قاعدة البيانات كالتالي: operations = [ migrations.AlterField( model_name='mymodel', name='name', field=models.BooleanField(default=False, db_column=b'name'), ), migrations.RenameField( model_name='mymodel', old_name='name', new_name='full_name', ), حل أخر ببساطة عن طريق تسمية الحقل: class Foo(models.Model): name = models.CharField() الى اسم جديد: class Foo(models.Model): full_name = models.CharField() ثم قم بتشغيل الكود التالي: python manage.py makemigrations هذا سوف يقوم بحذف القديم وعمل حقل جديد. الان اذهب وقم بتعديل التالي: operations = [ migrations.RenameField( model_name='foo', old_name='name', new_name='full_name') ] ثم قم بتشغيل الكود التالي لنقل البيانات للحقل الجديد دون فقدان اي بيانات: python manage.py migrate تم التعديل في 16 سبتمبر 2021 بواسطة Ahmed Sharshar اقتباس
السؤال
Adam Ebrahim
أرغب في تغيير اسم حقل معين في النموذج model في جانغو Django:
يجب أن يتغير الحقل name إلى full_name كالتالي:
كيف أقوم بذلك؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.