Probeer niet om int toe te wijzen voor payment.student .Wijs student toe instantie.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Bovendien moet u de regels voor coderingsstijlen volgen (lees over PEP8 ):
- klassenamen begonnen met hoofdletters
- veldnamen beginnen niet met hoofdletters
- variabelen en velden gebruiken geen camel case - klassenamen wel
Je code werkt zonder deze regels, maar als Python-ontwikkelaars hebben we enkele normen voor leesbare code.
En in Django hoeft u het primaire sleutelveld niet te definiëren - het wordt automatisch gemaakt en is toegankelijk met instance.pk .
En ik weet niet zeker of je echt wilt dat je buitenlandse sleutel naar student wijst kolom van student table.
En je kunt gewoon student importeren model als het in een andere module is gedefinieerd.
Dus met deze correcties zou je klassedefinitie als volgt moeten zijn:
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)
Nu heeft elke betalingsinstantie een impliciet veld pk wat staat voor primaire sleutel. En tot slot een lijn in je zicht met stijlcorrecties:
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