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

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)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.