تگ / python
-
آشنایی با Query و QuerySet در جنگو (قسمت سوم) – select_related() و prefetch_related()
زمان مطالعه: 8 دقیقه آشنایی با کوئری ست union() در جنگو : union(*other_qs, all=False) از عملگر union در SQLاستفاده می کند تا نتایج دو یا چند کوئری ست را با هم ترکیب کند، برای مثال: عملگر UNION…
جولای 19, 2021 -
حل ارور 502 Bad Gateway برای Python و Gunicorn
زمان مطالعه: 2 دقیقه با سلام و درود، خیلی سریع میرم سر اصل مطلب، فرضیات ما این هست که شما از Gunicorn استفاده می کنید و به ارور NGINX 502 Bad Gateway برخورده اید. Gunicorn یکی…
می 5, 2021 -
آموزش rotate کردن پروکسی و آدرس های IP در پایتون و Scrapy
زمان مطالعه: 4 دقیقه با سلام و درود، تو این آموزش قصد دارم از rotate کردن proxies و IP Addresses در پایتون و در ادامه استفاده از پروکسی در Scrapy صحبت بکنم. (How To Rotate Proxies…
مارس 20, 2020 -
آموزش استفاده از Scrapy (تکمیلی)
زمان مطالعه: 2 دقیقه با سلام و درود، پیشاپیش سال نو مبارک باشه (سال ۱۳۹۹ – کرونا ویروس) – قبلا مطلبی در مورد آموزش Scrapy داخل بلاگ گذاشته بودم (اینجا می تونید مطالعش کنید)، در این…
مارس 18, 2020 -
برنامه نویسی سوکت و شبکه در پایتون (Socket Programming) قسمت دوم
زمان مطالعه: 6 دقیقه با سلام، با قسمت دوم برنامه نویسی سوکت در پایتون در خدمتتون هستم. قسمت اول رو اینجا میتونید مشاهده کنید. شکست ارتباطات (Communication Breakdown) بیاید یه مقدار دقیقتر به چگونگیه ارتباط کلاینت…
فوریه 10, 2020 -
نصب و استفاده از خزنده Scrapy
زمان مطالعه: 4 دقیقه آموزش استفاده از خزنده در پایتون با استفاده از فریمورک scrapy
اکتبر 28, 2019 -
بروزرسانی پایتون در رزپری پای ۳
زمان مطالعه: 2 دقیقه با سلام و درود ، یه پروژه کوچیک داشتم که مجبور به استفاده از رسپری پای ۳ شدم، پس از نصب raspbian و آپدیت کردنش متوجه شدم که پایتون ۳ نسخه ۳.۵.۲…
آوریل 10, 2019 -
آموزش پایتون از صفر تا … (قسمت ۵) – کنترل جریان در پایتون
زمان مطالعه: 4 دقیقه با سلام و درود، خب به قسمت کنترل جریان رسیدیم 🙂 یکی از اولین آموزش ها در زبان های برنامه نویسی بحث کنترل جریان و شرطی ها هست که در ادامه بهشون…
نوامبر 7, 2018 -
آموزش پایتون از صفر تا … (قسمت ۴) – ادامه String
زمان مطالعه: 7 دقیقه با سلام و درود، خب قسمت سوم که در مورد String ها د ر پایتون بود خیلی طولانی داشت می شد و تصمیم گرفتم بخش String ها رو در دو قسمت پیش…
اکتبر 12, 2018 -
آموزش پایتون از صفر تا … (قسمت ۳) – String
زمان مطالعه: 6 دقیقه با سلام، داخل قسمت ۱ از چگونگی تعریف یه متغیر String صحبت کردم. تو این قسمت می خوام به صورت مفصل به String در پایتون بپردازم. با توجه به اینکه قبول دارید…
سپتامبر 29, 2018 -
آموزش پایتون از صفر تا … (قسمت۲) – کامنت
زمان مطالعه: 4 دقیقه با نام خدا و سلام. تو این قسمت میخوام به طور کامل در مورد کامنت گذاری در پایتون براتون بنویسم. امیدوارم مفید باشه 🙂 کامنت مثل تابلو راهنما می مونه که به…
سپتامبر 26, 2018 -
آموزش پایتون از صفر تا … (قسمت۱) کلیدواژه، شناسه و متغیر ها
زمان مطالعه: 5 دقیقه قسمت اول از آموزش پایتون از صفر تا …
سپتامبر 26, 2018
..تبلیغات..
دستهها
- IDE (13)
- Android studio (9)
- pycharm (1)
- Visual Studio (3)
- sysadmin (15)
- ادمین سیستم – SysAdmin (27)
- برنامه نویسی (137)
- پایگاه داده (23)
- پردازش زبان طبیعی (3)
- دستهبندی نشده (3)
- سبک زندگی (24)
- سیستم عامل (50)
- Windows server 2012 (7)
- لینوکس (39)
- ubuntu (25)
- آموزش های مقدماتی (1)
- ویندوز (3)
- win 10 (3)
- مایکروسافت اکسل (1)
- محیط لینوکس (1)
- مهندسی نرم افزار (17)
- مستند سازی (2)
- وردپرس (1)
پرسش و پاسخ تصادفی
زمان مطالعه: < 1 دقیقهحل ارور Invalid data. Expected a dictionary, but got int.
خب مشکل کجاست؟ شما یه سریالایزر دارید، که مدل استفاده شده داخل سریالایزر شما یه کلید خارجی داره، بهنگام آپدیت کردن احتمالا به این مشکل برخوردید،
قدم اول احتمالا سریالایزر رو به صورت nested ساخته اید و در نتیجه بهنگام آپدیت کردن، فقط id اون کلید خارجی رو قبول نمیکنه و انتظار یه nested dictionary داره، راه حل خیلی ساده است، فقط کافیست یه سریالایزر جدید بسازید و serializers ها رو به دو دسته read و write تبدیل کنید تا به این مشکلات برنخورید.
به مثال زیر توجه کنید:
class HuntingDetailViewSerializer(serializers.ModelSerializer): species = HuntingSpeciesSerializer(many=True, read_only=True) technique = HuntingTechniqueTagSerializer() class Meta: model = HuntListing exclude = ('owner',)
شما سریالایزر بالا را دارید، داخل view نیز کد زیر را دارید:
listing_id = request.data.get('listing_id') listing = HuntListing.objects.get(id=listing_id) serializer = HuntingDetailViewSerializer(listing, data=request.data, partial=True) if serializer.is_valid(): serializer.save()
داده نمونه تون هم به صورت زیر هست :
{"listing_id":9, "technique":1, ....}
ولی ارور دارید به صورت زیر :
Invalid data. Expected a dictionary, but got int.
حل ارور:
فقط کافیست همان طور که گفته شد، serializer های readو write رو از هم جدا کنید، پس سریالایزر جدید داریم :
class HuntingDetailViewSerializer(serializers.ModelSerializer): species = HuntingSpeciesSerializer(many=True, read_only=True) class Meta: model = HuntListing exclude = ('owner',)
همان طور که ملاحظه کردید، خط زیر را حذف کردیم.
technique = HuntingTechniqueTagSerializer()
برچسبها
یا هر چقدر دوست داری از فرم زیر منو حمابت کن: