Чи можу я зробити поле зовнішнього ключа необов’язковим у моделі Джанго


110

У мене цей код

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

Там не завжди можливо, що у мене є три цінності книг. тому іноді, якщо я не знаю тему чи місцеположення чи видавця. Тоді я хочу зберегти їх порожніми

Але якщо у мене є, мені потрібно вибрати поле для вибору. чи можливо так

Відповіді:


195

Звичайно, просто додайте blank=True, null=Trueдля кожного поля, яке ви хочете залишатись необов’язковим

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

6
Чи потрібні обидва? Які б були недоліки просто використовувати null = True?
Уорд

12
@WardC Комбо цих двох є настільки частим, тому що зазвичай, якщо ви збираєтесь дозволити поле заповнювати порожню форму, вам також знадобиться ваша база даних, щоб дозволити значення NULL для цього поля. Виняток становлять CharFields та TextFields, які в Django ніколи не зберігаються як NULL. Пусті значення зберігаються в БД як порожній рядок ('').
fang_dejavu

8
@ Уорд, обидва не потрібні. Досить просто використовувати null=True.
Джем Ріссер

8
blank=Trueважливий для перевірки форми. Це дозволить порожній рядок як введення користувача в цьому полі. null=Trueдозволить значення NULL у стовпці бази даних.
cezar

1
Коментар @cezar врятував мені життя! Спасибі
po5i
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.