有没有办法只引用 Django ForeignKey 中的某些字段?

Posted

技术标签:

【中文标题】有没有办法只引用 Django ForeignKey 中的某些字段?【英文标题】:Is there a way to refer to only some fields in a Django ForeignKey? 【发布时间】:2018-04-05 07:50:13 【问题描述】:

我相信这最好用一个例子来解释。所以,我正在制定一个程序来保存国际和国家比赛的举重成绩。下面是一个(重量)举重模型:

class Lifter(Person):
    # Changed from dateTime, as we don't need time of birth
    birth_date = models.DateField(null=True)
    gender = models.CharField(max_length=10, choices=Gender.choices(), 
    null=True)
    club = models.ForeignKey('Club', null=True)

我想将 lifter 模型连接到 InterntionalResult 模型:

class InternationalResult(models.Model):

    lifter = models.ForeignKey(Lifter, null=True)

    body_weight = models.FloatField(verbose_name='Kroppsvekt', null=True)

    # International group can be (for example) "A" or "B"
    group = models.CharField(max_length=5, verbose_name='kategori')

    snatch = models.IntegerField()
    clean_and_jerk = models.IntegerField()
    total = models.IntegerField()

但是,lifter 有一个 ForeginKey 来分组 (club = models.ForeignKey('Club', null=True))。当我将 Lifter 连接到 InternationalResult 时,我想排除这个 ForgeinKey,但仍将 Result 连接到 Lifter 的其余部分。这是因为国际比赛没有以相同方式的俱乐部。

有没有办法做到这一点,还是我应该创建一个新的 InternationalLifter 模型?

感谢您的宝贵时间!

【问题讨论】:

你的例子并没有真正解释这个问题。 “排除”这个ForeignKey是什么意思?它是模型上的一个字段,你可以根据模型的验证规则为它输入或不输入数据。 【参考方案1】:

你想用它做什么?这将显示在模板中吗? “排除”字段的最简单方法是不渲染它,或者一般不使用它。不用担心性能,外键关系只有在评估时才会获取。

【讨论】:

以上是关于有没有办法只引用 Django ForeignKey 中的某些字段?的主要内容,如果未能解决你的问题,请参考以下文章

Django——有没有办法从模板中引用/获取当前页面 URL? [复制]

在 Django 中有没有办法根据一些预定义的变量只公开一定范围的 URL?

有没有办法在 django 模板中迭代列表中的列表?

当查询被填充时,有没有办法在 Django 模板中呈现大型查询集?

Django - 从 Django 模板访问外键管理器

如何在 django 表单中包含 id 字段?