Forsøg ikke at tildele int
for payment.student
.Tildel student
eksempel.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Desuden bør du følge reglerne for kodningsstil (læs om PEP8
):
- klassenavne startede med store bogstaver
- feltnavne starter ikke med store bogstaver
- variabler og felter bruger ikke kamelbogstaver - det gør klassenavne
Din kode fungerer uden disse regler, men som Python-udviklere har vi nogle standarder for læsbar kode.
Og i Django behøver du ikke at definere primært nøglefelt - det oprettes automatisk og er tilgængeligt med instance.pk
.
Og jeg er ikke sikker på, om du virkelig vil have din fremmednøgle til at pege på student
kolonne af student
tabel.
Og du kan bare importere student
model, hvis den er defineret i et andet modul.
Så med disse rettelser skulle din klassedefinition være sådan:
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 har enhver betalingsinstans et implicit felt pk
som står for primær nøgle. Og endelig en linje i din visning med stylingkorrektioner:
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