Django modelinde yabancı anahtar alanını isteğe bağlı yapabilir miyim


111

Bu koda sahibim

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

Üç kitap değerine sahip olmam her zaman mümkün olmuyor. bu yüzden bazen konuyu, yeri veya yayıncıyı bilmiyorsam. Sonra onları boş tutmak istiyorum

Ama eğer varsa, seçmek için kutuyu seçmem gerekir. bunun gibi mümkün mü

Yanıtlar:


195

Elbette, blank=True, null=Trueisteğe bağlı kalmasını istediğiniz her alan için şunu ekleyin :

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

6
İkisine de ihtiyaç var mı? Sadece null = True kullanmanın dezavantajları nelerdir?
Ward

12
@WardC Bu ikisinin birleşimi çok sıktır çünkü tipik olarak formunuzda bir alanın boş olmasına izin verirseniz, veritabanınızın o alan için NULL değerlere izin vermesine de ihtiyacınız olacaktır. Bunun istisnası, Django'da asla NULL olarak kaydedilmeyen CharFields ve TextFields'dir. Boş değerler, DB'de boş bir dize ('') olarak saklanır.
fang_dejavu

8
@Ward, her ikisi de gerekli değil. Sadece kullanmak yeterlidir null=True.
Jam Risser

8
blank=Trueform doğrulama için önemlidir. Bu alana kullanıcı girişi olarak boş bir dizeye izin verecektir. veritabanı sütununda NULL değere null=Trueizin verir .
Cezar

1
@cezar yorumu hayatımı kurtardı! Teşekkürler
po5i
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.