Django-rest-framework: TypeError: set_context () مفقودة وسيطة موضعية مطلوبة: 'serializer_field'

تم إنشاؤها على ٢٤ يونيو ٢٠١٩  ·  3تعليقات  ·  مصدر: encode/django-rest-framework

قائمة تدقيق

  • [] لقد تحققت من وجود هذه المشكلة مقابل فرع master من إطار عمل Django REST.
  • [] لقد بحثت عن مشكلات مماثلة في كل من التذاكر المفتوحة والمغلقة ولا يمكنني العثور على نسخة مكررة.
  • [] هذا ليس سؤال استخدام. (يجب توجيه هؤلاء إلى مجموعة المناقشة بدلاً من ذلك).
  • [] لا يمكن التعامل مع هذا كمكتبة طرف ثالث. (نفضل أن تكون الوظائف الجديدة في شكل مكتبات تابعة لجهات خارجية حيثما أمكن ذلك.)
  • [] لقد اختزلت المشكلة إلى أبسط حالة ممكنة.
  • [] لقد قمت بتضمين اختبار فاشل كطلب سحب. (إذا لم تتمكن من القيام بذلك ، فلا يزال بإمكاننا قبول المشكلة.)

خطوات التكاثر

فئة GraphDomainSerializer (مسلسلات.ModelSerializer):
user = serializers.HiddenField (افتراضي = serializers.CurrentUserDefault)

سلوك متوقع

السلوك الفعلي

فئة CurrentUserDefault (كائن):
ضبط set_context (self، serializer_field):
self.user = serializer_field.context ['طلب']. مستخدم

def __call__(self):
    return self.user

def __repr__(self):
    return unicode_to_repr('%s()' % self.__class__.__name__)

def get_default (ذاتي):
""
قم بإرجاع القيمة الافتراضية لاستخدامها عند التحقق من صحة البيانات إذا لم يكن هناك إدخال
يتم توفيره لهذا المجال.

    If a default has not been set for this field then this will simply
    raise `SkipField`, indicating that no value should be set in the
    validated data for this field.
    """
    if self.default is empty or getattr(self.root, 'partial', False):
        # No default, or this is a partial update.
        raise SkipField()
    if callable(self.default):
        if hasattr(self.default, 'set_context'):
            **self.default.set_context(self)**
        return self.default()
    return self.default

ملف "/Users/lishijin/.pyenv/versions/3.7.2/lib/python3.7/site-packages/rest_framework/fields.py" ، السطر 490 ، في get_default
self.default.set_context (ذاتي)
TypeError: set_context () مفقودة وسيطة موضعية مطلوبة: 'serializer_field'
[24 / يونيو / 2019 14:34:45] "POST / الرسوم البيانية / HTTP / 1.1" 500 21130

التعليق الأكثر فائدة

يجب أن تكون القيمة الافتراضية نسخة وليست فئة: serializers.CurrentUserDefault() كما هو موضح في الوثائق

ال 3 كومينتر

يجب أن تكون القيمة الافتراضية نسخة وليست فئة: serializers.CurrentUserDefault() كما هو موضح في الوثائق

يجب أن يكون الإعداد الافتراضي مثيلًا وليس فئة: serializers.CurrentUserDefault() كما هو موضح في الوثائق

لقد حلت المشكلة

يجب أن تكون القيمة الافتراضية نسخة وليست فئة: serializers.CurrentUserDefault() كما هو موضح في الوثائق

شكرًا , لقد ساعدتني في حل هذه المشكلة

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات