Не се опитвайте да присвоите int
за payment.student
.Присвояване на student
екземпляр.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Освен това трябва да следвате правилата за стил на кодиране (прочетете за PEP8
):
- имената на класовете започват с главни букви
- имената на полетата не започват с главни букви
- променливите и полетата не използват главни букви - имената на класовете използват
Вашият код ще работи и без тези правила, но като разработчици на Python имаме някои стандарти за четим код.
А в Django не е нужно да дефинирате поле за първичен ключ - то се създава автоматично и е достъпно с instance.pk
.
И не съм сигурен дали наистина искате външният ви ключ да сочи към student
колона на student
таблица.
И можете просто да импортирате student
модел, ако е дефиниран в друг модул.
Така че с тези корекции вашата дефиниция на клас трябва да бъде като:
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