Jangan mencoba untuk menetapkan int
untuk payment.student
.Tugaskan student
contoh.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Selain itu, Anda harus mengikuti aturan gaya pengkodean (baca tentang PEP8
):
- nama kelas dimulai dengan huruf kapital
- nama kolom tidak diawali dengan huruf kapital
- variabel dan bidang tidak menggunakan case unta - nama kelas bisa
Kode Anda akan berfungsi tanpa aturan ini, tetapi sebagai Pengembang Python, kami memiliki beberapa standar untuk kode yang dapat dibaca.
Dan di Django anda tidak perlu mendefinisikan bidang kunci utama - itu dibuat secara otomatis dan dapat diakses dengan instance.pk
.
Dan saya tidak yakin apakah Anda benar-benar ingin kunci asing Anda menunjuk ke student
kolom student
tabel.
Dan Anda cukup mengimpor student
model jika didefinisikan dalam modul lain.
Jadi dengan koreksi ini definisi kelas Anda akan menjadi seperti:
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)
Sekarang setiap instance Pembayaran memiliki bidang implisit pk
yang merupakan singkatan dari kunci utama. Dan akhirnya garis dalam tampilan Anda dengan koreksi gaya:
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