int
assign असाइन करने का प्रयास न करें payment.student
. के लिए .असाइन करें student
उदाहरण।
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
इसके अलावा आपको कोडिंग शैली के नियमों का पालन करना चाहिए (PEP8
. के बारे में पढ़ें) ):
- कक्षा के नाम बड़े अक्षरों से शुरू होते हैं
- फ़ील्ड नाम बड़े अक्षरों से शुरू नहीं हुए हैं
- चर और फ़ील्ड ऊंट केस का उपयोग नहीं करते - वर्ग के नाम करते हैं
आपका कोड इस नियम के बिना काम करेगा लेकिन पायथन डेवलपर्स के रूप में हमारे पास पठनीय कोड के लिए कुछ मानक हैं।
और Django में आपको प्राथमिक कुंजी फ़ील्ड को परिभाषित करने की आवश्यकता नहीं है - यह स्वचालित रूप से बनाया गया है और instance.pk
के साथ पहुंच योग्य है .
और मुझे यकीन नहीं है कि क्या आप वाकई चाहते हैं कि आपकी विदेशी कुंजी student
को इंगित करे student
. का कॉलम तालिका.
और आप केवल student
import आयात कर सकते हैं मॉडल अगर इसे अन्य मॉड्यूल में परिभाषित किया गया है।
तो इन सुधारों के साथ आपकी कक्षा की परिभाषा इस प्रकार होनी चाहिए:
from other_app.models import Student
class Payment(models.Model):
student = models.ForeignKey(Student)
date_time = models.DateField(auto_now_add=True)
amount_due = models.DecimalField(max_digits=5, decimal_places=2)
अब किसी भी भुगतान इंस्टेंस में निहित फ़ील्ड pk
. है जो प्राथमिक कुंजी के लिए खड़ा है। और स्टाइल सुधारों के साथ आपके विचार में एक पंक्ति को अंतिम रूप दें:
payment.student = Student.get(pk=1) # Desired value `1` for foreign key assumed
# payment is instance so all lowercase here
# Student on the right side is a class so started with capital