Nepokoušejte se přiřadit int
pro payment.student
.Přiřadit student
instance.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Kromě toho byste měli dodržovat pravidla pro styl kódování (přečtěte si o PEP8
):
- názvy tříd začínají velkými písmeny
- názvy polí nezačínají velkými písmeny
- proměnné a pole nepoužívají velká a malá písmena – názvy tříd ano
Váš kód bude fungovat bez těchto pravidel, ale jako vývojáři Pythonu máme určité standardy pro čitelný kód.
A v Django nemusíte definovat pole primárního klíče – je vytvořeno automaticky a přístupné pomocí instance.pk
.
A nejsem si jistý, jestli opravdu chcete, aby váš cizí klíč ukazoval na student
sloupec student
tabulku.
A můžete importovat pouze student
model, pokud je definován v jiném modulu.
Takže s těmito opravami by vaše definice třídy měla vypadat takto:
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)
Nyní má každá instance platby implicitní pole pk
což znamená primární klíč. A konečně čára ve vašem zobrazení s úpravami stylů:
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