ValueError Django

Abdullah • منذ 6 سنوات

السلام عليكم جميعا ، انا عندي سؤال سبق وتكرر نفس الخطأ ولا لقيت له حل ..

 

عندي في الmodel.py كلاسين وهم :

class Team(models.Model):
name = models.CharField(max_length=256 , unique=True)
details = models.TextField()

def __str__(self):
    return self.name


class GameScore(models.Model):
def __str__(self):
    return '{} {} - {} {}'.format(self.first_team.name,self.first_team_score,
                                  self.second_team_score,self.second_team.name)
first_team = models.ForeignKey\
    (Team,related_name='first_team',null=True,on_delete=models.PROTECT)
second_team = models.ForeignKey\
    (Team,related_name='second_team',null=True,on_delete=models.PROTECT)
first_team_score = models.IntegerField(default=0)
second_team_score = models.IntegerField(default=0)
GameDate = models.DateTimeField(auto_now=True)

 ولكن اذا جيت اضيف من صفحة الآدمن فريقين يتم اضافتهم ولكن عند فتح صفحة النتائج سواء من المتصفح او صفحة الآدمن تظهر رسالة خطأ :

 Exception Type: ValueError

Exception Value: invalid literal for int() with base 10: 'RM'

 

هل احد سبق ومر بهالمشكلة ؟ 

كلمات دليلية: django python

الإجابة الصحيحة

albader • منذ 6 سنوات

الكود سليم

 

الحل بكل بساطة

اول شي قم بحذف قاعدة البيانات بالامر هذا

لو تستخدم لينكس الامر هذا 

rm db.sqlite3


لو كنت تستخدم ويندوز كلك يمين على الملف وحذف 

 

بعد حذف الملف طبق الامر التالي

 python manage.py makemigrations

بعدين طبق الامر التالي

python manage.py migrate

 

 

بعد كذا قم بانشاء حساب للمدير جديد لاننا حذفنا قاعدة البيانات

بالامر التالي

 

python manage.py createsuperuser

 

اخر شي قم بتشغيل السيرفر

python manage.py runserver

 

بيروح الخطا لان الخطا من البيانات المضافه هي اللي فيها مشكله

 

ولا الكود سليم

 

الإجابات (4)

عمار الخوالدة • منذ 6 سنوات

دالة int() يمكنها ان تستقبل رقم عشري float مثل 42.0 وتقوم بتحويله إلى عدد صحيح integer.

أو تستقبل نص String وتحوله إلى integer مثل '34'،

تحدث هذه المشكلة غالبا عندما تمرر لها نصا بداخله رقم عشري وليس عدد صحيح، مثل '45.0' فهو سيقوم بتحويل النص إلى عدد صحيح مباشرة، مع ان ما بداخل النص هو عدد عشري.


تأكد من المدخلات التي لديك.

Abdullah • منذ 6 سنوات

المدخلات هي ٤ انواع ، اول نوعين بتكون من نوع تيم اللي فيه نيم و ديتيلز ، النوعين الاخرين من نوع int وتم التاكد ان المرسل int  !

ومع ذلك لازال الخطأ موجود 

ارفقت الملف هنا في حال اردت التأكد ومعاينة الكود انت او احد الاخوة 

 

 

صراحةً مشكلة معقدة لم اجد لها حل ابداً ...

albader • منذ 6 سنوات
الإجابة الصحيحة
مميز

الكود سليم

 

الحل بكل بساطة

اول شي قم بحذف قاعدة البيانات بالامر هذا

لو تستخدم لينكس الامر هذا 

rm db.sqlite3


لو كنت تستخدم ويندوز كلك يمين على الملف وحذف 

 

بعد حذف الملف طبق الامر التالي

 python manage.py makemigrations

بعدين طبق الامر التالي

python manage.py migrate

 

 

بعد كذا قم بانشاء حساب للمدير جديد لاننا حذفنا قاعدة البيانات

بالامر التالي

 

python manage.py createsuperuser

 

اخر شي قم بتشغيل السيرفر

python manage.py runserver

 

بيروح الخطا لان الخطا من البيانات المضافه هي اللي فيها مشكله

 

ولا الكود سليم

 

Abdullah • منذ 6 سنوات

الف شكر لك يالبدر ماقصرت يابعدي

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !