加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

使用外键的Django DRY详细名称?

发布时间:2020-12-20 11:03:35 所属栏目:Python 来源:网络整理
导读:class ModelA(models.Model): class Meta: verbose_name = 'my awesome name'class ModelB(models.Model): some_field = models.ForeignKey(ModelA) 有没有办法让some_field的verbose_name成为我真棒的名字而不是明确的呢? (即使用详细名称相关类作为默认字
class ModelA(models.Model):
    class Meta:
        verbose_name = 'my awesome name'

class ModelB(models.Model):
    some_field = models.ForeignKey(ModelA)

有没有办法让some_field的verbose_name成为我真棒的名字而不是明确的呢? (即使用详细名称相关类作为默认字段详细名称,而不是使用属性名称)
我实际上认为这应该是默认的Django行为.

注意:我正在使用Django 1.11

解决方法

查看源代码,似乎这是在RelatedField类的 set_attributes_from_rel方法中实现的:

if self.verbose_name is None:
    self.verbose_name = self.remote_field.model._meta.verbose_name

verbose_name也在Field类的set_attributes_from_name方法中设置:

if self.verbose_name is None and self.name:
    self.verbose_name = self.name.replace('_',' ')

首先运行此方法,因此当运行RelatedField类的方法时,self.verbose_name不再是None.我不清楚为什么首先运行Field类的方法.

注意:我检查了GitHub上的当前源代码,这很可能是比您的代码更新的版本,因为您的ForeignKey没有在2.0版本中需要的on_delete参数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读