自定义 Django 的隐式 ManyToManyField 的"through"表?



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

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

基本上,我试图覆盖TabularInline管理类使用的"行标题",比如在以下问题中:

  • 在admin中删除或编辑对象名称。表格联机
  • 如何在渲染StackedOnline字段时覆盖str方法
  • https://groups.google.com/d/topic/django-users/d0QPIAklSug

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

您可以对__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)
defmystr(self):
return 'str-of-through-model'
ModelB.modela_set.through.__str__ = mystr

但这不是很好的做法。理想情况下,您可以创建一个直通模型,并将方法添加到该模型中。

相关内容

  • 没有找到相关文章

最新更新