Hỏi về crud trong django
Chào các bạn, mình mới học Django một thời gian nhưng vẫn thắc mắc về cái foreign key của nó. Bình thường thì trong sql , mình hay để khoá ngoài là tên một trường là khoá chính của bảng khác
vd như: Bảng Sinh viên có MALOP liên kết đến khoá chính là MALOP trong bảng LOP
tuy nhiên trong django thì đại loại là:
class LOP(models.Model):
…
SINHVIEN = models.Foreignkey(SINHVIEN, on_delete = models.CASCADE)
(thực tế thì sinh viên với lớp là manytomany, tuy nhiên cứ vd tạm manytoone)
thì trong django, ở model SINHVIEN mình có cần khai báo thêm trường MALOP hay không
và trong form nhập thông tin cho model SINHVIEN, mình có cần khai báo thêm field MALOP hay không
và mình nên dùng form hay modelform
(mình không dùng admin site nhé)
Cảm ơn các bạn nhiều!
Giả sử bạn có 2 model: Student và ClassRoom. 1 ClassRoom có nhiều Student thì việc khai báo foreign key cần khai báo ở model Student.
Về vấn đề nên dùng
forms.Form
hayModelForm
thì tuỳ vào từng trường hợp.Nếu bạn chỉ muốn validate dữ liệu thì dùng
forms.Form
, nếu muốn vừa có thể validate dữ liệu, vừa đọc/ghi xuống DB thì dùngModelForm
vìModelForm
là subclass củaforms.Form
có thêm các tính năng liên quan đến DB.lúc thêm form field để input thì vẫn phải khai báo thêm field của foreign key đúng ko ạ
Tùy vào ngữ cảnh, ví dụ như bạn đã có 1 danh sách các lớp học. Vào 1 lớp để tạo sinh viên thì không cần input mã lớp vì bạn có thể lấy mã lớp từ URL của nó. Còn nếu bạn cần tạo sinh viên mà không phải vào 1 lớp cụ thể nào trước thì cần phải tạo input cho mã lớp bằng dropdown hoặc autocomplete chẳng hạn.