Posso tornar o campo de chave estrangeira opcional no modelo Django

110

Eu tenho este código

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

Nem sempre é possível que eu tenha três valores de livros. então, às vezes, se eu não sei o assunto, a localização ou a editora. Então eu quero mantê-los vazios

Mas se eu tiver, então preciso selecionar a caixa para selecionar. é possível assim

usuário1
fonte

Respostas:

195

Claro, basta adicionar blank=True, null=Truepara cada campo que você deseja permanecer opcional, como

subject = models.ForeignKey(subjects, blank=True, null=True)
Abid A
fonte
6
Ambos são necessários? Quais seriam as desvantagens de apenas usar null = True?
Ala
12
@WardC A combinação dos dois é tão frequente porque, normalmente, se você permitir que um campo fique em branco em seu formulário, também precisará que seu banco de dados permita valores NULL para esse campo. A exceção são CharFields e TextFields, que no Django nunca são salvos como NULL. Valores em branco são armazenados no banco de dados como uma string vazia ('').
fang_dejavu de
8
@Ward, ambos não são necessários. É suficiente apenas usar null=True.
Jam Risser de
8
blank=Trueé importante para a validação do formulário. Isso permitirá uma string vazia como entrada do usuário neste campo. null=Truepermitirá o valor NULL na coluna do banco de dados.
cezar
1
O comentário do @cezar salvou minha vida! Obrigado
po5i