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