Đừng cố gán int
cho payment.student
.Assign student
ví dụ.
payment.student = student.get(pk=1) # Desired value `1` for foreign key assumed
Hơn nữa, bạn nên tuân theo các quy tắc về kiểu mã hóa (đọc về PEP8
):
- tên lớp bắt đầu bằng chữ in hoa
- tên trường không được bắt đầu bằng chữ in hoa
- các biến và trường không sử dụng kiểu chữ hoa camel - tên lớp thì có
Mã của bạn sẽ hoạt động mà không có quy tắc này nhưng với tư cách là Nhà phát triển Python, chúng tôi có một số tiêu chuẩn cho mã có thể đọc được.
Và trong Django, bạn không phải xác định trường khóa chính - nó được tạo tự động và có thể truy cập bằng instance.pk
.
Và tôi không chắc liệu bạn có thực sự muốn khóa ngoại của mình trỏ đến student
hay không cột student
bảng.
Và bạn chỉ có thể nhập student
nếu nó được xác định trong mô-đun khác.
Vì vậy, với những chỉnh sửa này, định nghĩa lớp của bạn sẽ giống như sau:
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)
Giờ đây, bất kỳ phiên bản Thanh toán nào đều có trường ngầm định pk
là viết tắt của khóa chính Và phân tích một dòng trong chế độ xem của bạn với các chỉnh sửa kiểu dáng:
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