No intente asignar int
para payment.student
.Asignar student
instancia.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Además, debe seguir las reglas de estilo de codificación (lea sobre PEP8
):
- los nombres de las clases comenzaron con letras mayúsculas
- nombres de campo que no comienzan con letras mayúsculas
- las variables y los campos no usan mayúsculas y minúsculas, los nombres de clase sí
Su código funcionará sin estas reglas, pero como desarrolladores de Python tenemos algunos estándares para el código legible.
Y en Django no tiene que definir el campo de clave principal:se crea automáticamente y se puede acceder a él con instance.pk
.
Y no estoy seguro de si realmente desea que su clave externa apunte a student
columna de student
tabla.
Y puede importar student
model si está definido en otro módulo.
Entonces, con estas correcciones, la definición de su clase debería ser como:
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)
Ahora cualquier instancia de pago tiene un campo implícito pk
que significa clave principal. Y, finalmente, una línea en su vista con correcciones de estilo:
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