Não tente atribuir
int
para payment.student
.Atribuir student
instância. payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Além disso, você deve seguir as regras de estilo de codificação (leia sobre
PEP8
):- nomes de classe iniciados com letras maiúsculas
- nomes de campos não iniciados com letras maiúsculas
- variáveis e campos não usam maiúsculas e minúsculas - nomes de classes sim
Seu código funcionará sem essas regras, mas como desenvolvedores Python temos alguns padrões para código legível.
E no Django você não precisa definir o campo de chave primária - ele é criado automaticamente e acessível com
instance.pk
.E não tenho certeza se você realmente deseja que sua chave estrangeira aponte para
student
coluna de student
table.E você pode simplesmente importar
student
model se estiver definido em outro módulo. Então, com essas correções, sua definição de classe deve ficar assim:
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)
Agora, qualquer instância do Payment tem o campo implícito
pk
que significa chave primária. E finalmente uma linha em sua visão com correções 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