Fix #7722.
Render BooleanFields with allow_null=True as HTML select rather than as HTML checkbox in Browsable API #7722.
Description
This PR is created in order to fix issue #7722. A serializer field of type BooleanField with allow_null=True was being rendered as HTML checkbox elements on Browsable API forms even though three values (True, False, and None/null) are possible. It was also happening for the model BooleanField instances with allow_null=True that are converted to serializer BooleanField instances. In this PR, I worked on keeping the checkbox rendering for BooleanFields with allow_null=False while providing dropdown rendering (HTML select element) for BooleanFields with allow_null=True.
fix #7722 refs #7722
Thanks for working on this. Having a look over, I'm wondering about the alternative of not introducing a new template, and using the existing "select.html" template.
Hi @tomchristie ,
Thank you for your comment. I was thinking about that alternative too. The following part from select.html was my main hesitation to use it. I was not sure if I should adapt the value of BooleanField and that part of the template. Without changing that template, I could not think of a solution to drop -------- and introduce unknown option. What do you think about it?
If unknown option is not that important, I believe it is possible to make the value of the BoundField as 'False' string instead of False boolean value. That way, for False, we can avoid if not field.value.
<select class="form-control" name="{{ field.name }}">
{% if field.allow_null or field.allow_blank %}
<option value="" {% if not field.value %}selected{% endif %}>--------</option>
{% endif %}
</select>
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Could the PR title have some words in it to describe the bug or the fix? Would help all of us looking at notifications or lists of tickets. Thanks!
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
we might need a new taker for this