H ع أنت هتستخدمه كرقم للطلب مش كـ pk الـ Auto field و الـ Big Auto field مش لازم يكونوا pk يعني: order_number = models.AutoField() هتلاحظ أنه مفيش primay_key=True لأنه أنت مش هتستخدمه كـ pk لو قرأت الرابط اللي أرسلته لك هتلاقيه بيقول: "An IntegerField that automatically increments according to available IDs." ده مجرد حقل عددي (Integer) بيزيد بصورة تلقائية.
H
M M
M H
ع رابط
انقر للعرضحقل AutoField بيحول مسؤولية زيادة الرقم لقاعدة البيانات بطريقة متوافقة مع ACID لذلك لا خوف من race conditions بل أن هذا هو الحقل اللي django بيستخدمه لعمل ID أو pk التلقائي، طبعًا الفرق هنا إضافة primary_key=True https://docs.djangoproject.com/en/6.1/topics/db/models/#automatic-primary-key-fields
ع راح يعطيك خطأ لأنك بتعمل عمود جديد في جدول قاعدة البيانات وفي بيانات بالفعل موجودة. يعني في طلبات بالفعل في قاعدة البيانات وملهاش رقم. أمامك أكثر من خيار: 1- اما أنه يكون عندك أرقام للطلبات هذه في مكان ما، تكتب سكريبت يأخذ أرقام الطلبات هذه ويملئ بها حقل "رقم الطلب" للطلبات الموجودة في قاعدة البيانات بالفعل. 2- أنك تعطي رقم طلب موحد للكل وأنت بتعمل migration هيسألك على Default تحدد له رقم يكون الـ Default للطلبات القديمة اللي ملهاش رقم طلب. 3- أنه حقل "رقم الطلب" للطلبات القديمة يكون null وساعتها لازم تحدد في الحقل null=True👍1