Försök inte att tilldela int
för payment.student
.Tilldela student
instans.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Dessutom bör du följa regler för kodningsstil (läs om PEP8
):
- klassnamn som börjar med versaler
- fältnamn börjar inte med versaler
- variabler och fält använder inte kamelfall – klassnamn gör det
Din kod kommer att fungera utan dessa regler men som Python-utvecklare har vi några standarder för läsbar kod.
Och i Django behöver du inte definiera primärnyckelfältet - det skapas automatiskt och är tillgängligt med instance.pk
.
Och jag är inte säker på om du verkligen vill att din främmande nyckel ska peka på student
kolumn för student
tabell.
Och du kan bara importera student
modell om den är definierad i en annan modul.
Så med dessa korrigeringar bör din klassdefinition vara så här:
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 alla betalningsinstanser ett implicit fält pk
som står för primärnyckel. Och slutligen en linje i din vy med stilkorrigeringar:
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