【发布时间】:2010-10-12 17:05:53
【问题描述】:
我正在使用 Django admin 来管理我的数据。 我有一个用户、组和域表 用户表与组和域表具有多对多关系。 Domains 表与 Groups 表具有一对多的关系。 当我通过管理员保存用户数据时,我还需要在 users_group 和 users_domains 表中进行一些额外的数据库更新。 我该怎么做呢?我把代码放在哪里。 谢谢。
【问题讨论】:
标签: python django django-admin
我正在使用 Django admin 来管理我的数据。 我有一个用户、组和域表 用户表与组和域表具有多对多关系。 Domains 表与 Groups 表具有一对多的关系。 当我通过管理员保存用户数据时,我还需要在 users_group 和 users_domains 表中进行一些额外的数据库更新。 我该怎么做呢?我把代码放在哪里。 谢谢。
【问题讨论】:
标签: python django django-admin
我想你正在寻找InlineModels。它们允许您在与父模型相同的页面中编辑相关模型。如果您正在寻找比这更好的控制,您可以覆盖 ModelAdmin save methods。
另外,当您需要某些东西时,请务必查看Manual。真的很不错。
【讨论】:
更新其他数据库表的最佳方法是执行必要的获取和保存操作。但是,如果您有一个多对多关系,默认情况下,关系的双方都可以从 _set 参数访问。也就是说, user.group_set.all() 将为您提供与用户关联的所有 Group 对象,而 group.user_set.all() 将为您提供与组关联的所有 User 对象。因此,如果您覆盖 save 方法(或注册一个信号侦听器——无论哪个选项听起来风格上更令人愉悦),请尝试:
for group in user.group_set.all():
#play with group object
....
group.save()
【讨论】: