【问题标题】:Customizing Django's implicit ManyToManyField's "through" table?自定义 Django 的隐式 ManyToManyField 的“通过”表?
【发布时间】:2020-07-19 19:23:11
【问题描述】:

我有两个通过ManyToManyField 连接的模型。我没有手动指定through 表,所以Django 隐式创建了一个。

我现在可以以某种方式自定义 through 表,特别是更改其 ___str___ 函数吗?

基本上,我正在尝试覆盖 TabularInline 管理类使用的“行标题”,就像在这些问题中一样:

但我想避免自定义模板或显式创建“关系表”,因为现在它由 Django 管理。

【问题讨论】:

    标签: django manytomanyfield


    【解决方案1】:

    您可以对__str__ 进行猴子补丁。例如,如果您的模型如下所示:

    class ModelA(models.Model):
        pass
    
    class ModelB(models.Model):
        modela_set = models.ManyToManyField(ModelA)

    然后你可以用猴子补丁:

    class ModelA(models.Model):
        pass
    
    class ModelB(models.Model):
        modela_set = models.ManyToManyField(ModelA)
    
    def mystr(self):
        return 'str-of-through-model'
    
    ModelB.modela_set.through.__str__ = mystr

    但这不是很好的做法。理想情况下,您制作一个贯穿模型,并向该模型添加方法。

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      • 2011-05-19
      • 1970-01-01
      • 2021-11-01
      • 2020-02-02
      相关资源
      最近更新 更多