Opened 15 years ago
Closed 15 years ago
#11646 closed (invalid)
Use refered model.verbose_name as default
Reported by: | Artem Skoretskiy | Owned by: | nobody |
---|---|---|---|
Component: | contrib.admin | Version: | 1.1 |
Severity: | Keywords: | ||
Cc: | Artem Skoretskiy, <tonn81@…> | Triage Stage: | Unreviewed |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
If user defined verbose_name for the model, it should be used as default for all ForeignKeys to it.
Example:
class School(models.Model): name = models.CharField(max_length=200,blank=True) class Meta: verbose_name = u'Школа' class Group(models.Model): school = models.ForeignKey(School) name = models.CharField(max_length=200,blank=True)
For this schema, while editing Group the field "school" should look like "Школа". Currently it is "School"
Change History (4)
comment:1 by , 15 years ago
Resolution: | → invalid |
---|---|
Status: | new → closed |
comment:2 by , 15 years ago
Cc: | added |
---|
Yes, it works well in "the simple case where the name of the ForeignKey field is the same as the model that is being linked to".
BUT:
- It works well for 80% of all cases
- It makes more sense than providing field name as label.
The idea it to provide a better [than current] default name that still can be overwritten by user. It would remove useless actions (manually set verbose_name) to get obvious result. User entered meaning data (verbose_name) - why should we ignore it? We should use it where relevant.
In case there are many ForeignKey to the same model, we can use current naming. I.e. (pseudocode, just to get the idea):
# field.name = "school" # field.related_class = <class School> # self.fields = [<field school>, <field name>] if field.name.lower() == field.related_class.lower() or len([f for f in self.fields if f.related_class == field.related_class]): label = field.related_class.verbose_name
comment:4 by , 15 years ago
Resolution: | → invalid |
---|---|
Status: | reopened → closed |
Please don't reopen tickets that have been closed by a core committer. If you disagree with a decision, start a thread on django-developers.
Err.... no, it shouldn't. Here's why:
{{[
}}}
The name (or verbose name) of the model you are linking to can only be used as a label in the simple case where the name of the ForiegnKey field is the same as the model that is being linked to. In any non-trivial case, the labeling needs to be determined on a case-by-base basis. Django has a way to handle this - the verbose_name argument on Field: