【问题标题】:django admin how to manipulate OneToMany related objects(not just inline)django admin 如何操作 OneToMany 相关对象(不仅仅是内联)
【发布时间】:2017-11-24 17:15:35
【问题描述】:

我有 2 个模型。 一个对另一个有一个外键。

说:

class Organization(models.Model):
    title = models.CharField(max_length=300)

class User(models.Model):
    name = models.CharField(max_length=300)
    organization = models.ForeignKey(Organization)

我想在 organizationAdmin 中显示在当前组织中工作的所有用户,例如更改链接列表。

应该可以

  • 添加新用户
  • 选择现有用户(与当前组织无关)并将其组织设置为当前

无需内联编辑它们

就像 userAdmin 中的权限 + 添加和更改它们

有现成的解决方案吗?不要手工制作表格

【问题讨论】:

  • 现成的解决方案是管理面板,只需将模型添加到其中即可。并且您无需执行任何操作,用户部分有许可,因此非超级用户的其他用户可以进入该部分。

标签: django django-admin one-to-many


【解决方案1】:

您可以使用exclude

class UserInline(admin.TabularInline):
    model = User
    exclude = ['name', 'other_fields']

或者你可以使用多对多关系:

class User(models.Model):
    name = models.CharField(max_length=300)   

class Organization(model.Model):
    title = models.CharField(max_length=300)
    users = models.ManyToManyField(User) 

【讨论】:

  • 我应该能够“选择现有用户并将其组织设置为当前”
  • 所以你可以使用ManyToManyField,它在你的情况下是完美的。
猜你喜欢
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-24
  • 2021-11-21
  • 1970-01-01
  • 2011-09-19
  • 2016-10-09
相关资源
最近更新 更多