Могу ли я сделать поле внешнего ключа необязательным в модели Django


111

У меня есть этот код

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?
Ward

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

8
@Ward, оба не нужны. Достаточно просто использовать null=True.
Jam

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

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