Python Django DRY使用外键的冗长名称?
有没有办法让Python Django DRY使用外键的冗长名称?,python,django,Python,Django,有没有办法让某个字段的详细名称成为我最棒的名字,而不需要明确说明?(即,使用与详细名称相关的类作为默认字段详细名称,而不是使用属性名称) 我实际上认为这应该是Django的默认行为 注意:我正在使用Django 1.11查看源代码,它似乎是在RelatedField类的方法中实现的: class ModelA(models.Model): class Meta: verbose_name = 'my awesome name' class ModelB(models.M
某个字段
的详细名称成为我最棒的名字
,而不需要明确说明?(即,使用与详细名称相关的类作为默认字段详细名称,而不是使用属性名称)
我实际上认为这应该是Django的默认行为
注意:我正在使用Django 1.11查看源代码,它似乎是在
RelatedField
类的方法中实现的:
class ModelA(models.Model):
class Meta:
verbose_name = 'my awesome name'
class ModelB(models.Model):
some_field = models.ForeignKey(ModelA)
if self.verbose_name is None:
self.verbose_name = self.remote_field.model._meta.verbose_name
verbose\u名称
也在字段
类的方法中设置:
class ModelA(models.Model):
class Meta:
verbose_name = 'my awesome name'
class ModelB(models.Model):
some_field = models.ForeignKey(ModelA)
if self.verbose_name is None:
self.verbose_name = self.remote_field.model._meta.verbose_name
此方法首先运行,因此当运行RelatedField
类的方法时,verbose\u name不再是None
。我不清楚为什么首先运行字段
类的方法
注意:我检查了GitHub上的当前源代码,它很可能是比您的代码更新的版本,因为您的
ForeignKey
没有版本2.0中要求的on\u delete
参数。回答非常好!但更进一步:该怎么办?定义自定义的ForeignKey
类?有关这方面的讨论,请参见。遗憾的是,由于不向后兼容,状态为wontfix
,但是注释提供了另一个选项,提供了verbose\u name作为verbose\u name=ModelA.\u meta.verbose\u name
@ikkuh,非常感谢您的调查:)据我在会谈中了解,这一功能最初是有效的,但他们在某个时候因为另一个功能而打破了它,然后,ans没有发现修复它的有用方法,似乎存在\u meta
解决方案,这是一个可接受的解决方案。