Currently I have been learning Django and while reading, I have come across the below code block which I don't understand.
private = models.BooleanField(
_('private'),
default=False,
help_text=_('theme is available ONLY for the site.'),
)
The above line of code contains _('private')
and I am not able to understand what it does. I know about using _
for translation-related stuff. Why attribute name not declared for _("private")
?
I have tried to find the answer online but have been unable.
Thanks.
As you can see in the source code of Django, the constructor of a
Field
(whichBooleanField
inherits) takesverbose_name
as first positional argument. So, your first argument (_('private')
) will be affected toverbose_name
.However, to make your code clearer, I would recommend to pass it as a keyword argument:
Using keyword argument for
verbose_name
will make it clearer for you and people reading your code, especially since Django documentation does not give the order of positional arguments. Using positional argument forces readers to read Django source code to know what it is.When you use keyword arguments, you can position your arguments as you like, so this code will work the same: