'Can I make the foreign key field optional in Django model
I have this code
subject = models.ForeignKey(subjects)
location = models.ForeignKey(location)
publisher = models.ForeignKey(publisher)
There its not always possible that I have three values of books. so sometimes if I don't know subject or location, or publisher. Then I want to keep them empty
But if I have then I need select box to select. is it possible like that
Solution 1:[1]
In order to accomplish this, the on_delete argument is necessary along with blank=True and null=True, and it would be better if you do it this way.
subject = models.ForeignKey(subjects, on_delete=models.SET_NULL, blank=True, null=True)
Solution 2:[2]
null=True
subject=models.ForeignKey(subjects, on_delete=models.CASCADE, default=None, blank=True, null=True)
Field.null
If True, Django will store empty values as NULL in the database. Default is False.
Avoid using null on string-based fields such as CharField and TextField. If a string-based field has null=True, that means it has two possible values for “no data”: NULL, and the empty string. In most cases, it’s redundant to have two possible values for “no data;” the Django convention is to use the empty string, not NULL. One exception is when a CharField has both unique=True and blank=True set. In this situation, null=True is required to avoid unique constraint violations when saving multiple objects with blank values.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | MD SHAYON |
