Tôi có thể đặt trường khóa ngoại là tùy chọn trong mô hình Django không


110

Tôi có mã này

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)

Ở đó không phải lúc nào tôi cũng có ba giá trị của sách. vì vậy đôi khi nếu tôi không biết chủ đề hoặc vị trí, hoặc nhà xuất bản. Sau đó, tôi muốn giữ chúng trống rỗng

Nhưng nếu tôi có thì tôi cần hộp chọn để chọn. nó có thể như vậy không

Câu trả lời:


195

Chắc chắn, chỉ cần thêm blank=True, null=Truecho mỗi trường mà bạn muốn vẫn là tùy chọn như

subject = models.ForeignKey(subjects, blank=True, null=True)

6
Cả hai đều cần thiết? Nhược điểm của việc chỉ sử dụng null = True là gì?
Phường

12
@WardC Sự kết hợp của cả hai rất thường xuyên bởi vì thông thường nếu bạn định cho phép một trường trống trong biểu mẫu của mình, bạn cũng sẽ cần cơ sở dữ liệu của mình để cho phép giá trị NULL cho trường đó. Ngoại lệ là CharFields và TextFields, trong Django không bao giờ được lưu dưới dạng NULL. Các giá trị trống được lưu trữ trong DB dưới dạng một chuỗi trống ('').
fang_dejavu

8
@Ward, cả hai đều không cần thiết. Chỉ cần sử dụng là đủ null=True.
Jam Risser

8
blank=Truerất quan trọng để xác thực biểu mẫu. Nó sẽ cho phép một chuỗi trống làm đầu vào của người dùng trong trường này. null=Truesẽ cho phép giá trị NULL trong cột cơ sở dữ liệu.
cezar

1
@cezar bình luận đã cứu mạng tôi! Cảm ơn
po5i
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.