• 0

خطأ on_delete must be callable في django python

لماذا يظهر هذا الخطأ

TypeError: on_delete must be callable

مع العلم الكود الذي يظهر منه الخطأ هو

user = models.ForeignKey(User, on_delete='None')

إصدار django عندي هو 3.2

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

المعامل on_delete يجب أن يكون قابل للاستدعاء أي تابع

أنت تحاول تمرير None ولكن محاطة بعلامة الاقتباس " ' " أي يتم معاملتها كنوع نص يمكنك تغييرها الى التالي 

user = models.ForeignKey(User, on_delete=None)

لكن اذا كنت تقصد ب None أن لا يتم اتخاذ اجراء عند حذف البيانات المرتبطة يمكنك تمرير التالي

user = models.ForeignKey(User, on_delete=models.DO_NOTHING)

حيث قيم on_delete يمكن أن تكون التالي

models.CASCADE
models.SET_NULL
models.DO_NOTHING
models.PROTECT

 

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

الخطأ فقط أنك تقوم باستدعاء دالة يجب ادخال بها المعامل delete لكنك لم تقم بادخالها، أنظر المثال التالي للتوضيح أولا:

class SomeModel(models.Model):
    field=models.ForeignKey(default=1, on_delete='CASCADE', to='main.Category')

وهذا استخدام خاطئ ينتج عنه نفس المشكلة التى تظهر لك، لذلك حلها كان كالتالي:

class SomeModel(models.Model):

    field=models.ForeignKey(default=1, on_delete=models.CASCADE, to='main.Category')

لذلك فان حل المشكلة خاصتك بنفس الطريقة بسيطة، فقط مرر الكائن model  مع اختيار DO_NOTHING عوضا عن None  كالتالي:

user = models.ForeignKey(User, on_delete=models.DO_NOTHING)

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن