0

私はさまざまなユーザー グループを持つプロジェクトに取り組んでおり、ユーザー グループは Web サイトでさまざまな権限を持っています。ここで、django admin グループ作成ページでこれらのユーザー グループを作成できるようにしたいと考えています。グループ作成ページには、グループに割り当てることができるさまざまな地域や機能など、いくつかのチェックボックスや多対多のフォームが必要です。

私はこのようなことを試しましたが、うまくいきません:

class GroupPermission(GroupAdmin):
    group = models.CharField(max_length=100)
    if not hasattr(Group, 'locations'):
        field = models.ForeignKey(Group,blank=True,null=True)
        field.contribute_to_class(Group, 'locations')
    annotations = models.TextField()
    show_all_annotations = models.BooleanField(default=False)
    location_group = models.CharField(max_length=100)
    show_all_locations = models.BooleanField(default=False)


class Meta:
    permissions = (
        ("show_us_map", "Allow user to view the US Map."),
        ("show_world_map", "Allow user to view the World Map."),
        ("show_europe_map", "Allow user to view the Europe Map."),
        ("allow_download_data", "Allow user to download data."),
    )
    def __unicode__(self):
    return self.group

admin.site.unregister(Group)
admin.site.register(Group, GroupPermission) 

誰にもアイデアはありますか?または、これを行うことができるプラグインはありますか?

4

2 に答える 2

1

次のように実行できます。

from django.contrib.auth.admin import GroupAdmin
from django.contrib.auth.models import Group

Membership = Group.user_set.related.through

class MembershipInline(admin.TabularInline):
    model = Membership
    extra = 1

GroupAdmin.inlines = list(GroupAdmin.inlines) + [MembershipInline]

上記のようにモンキー パッチを適用するのではなく、独自の を作成し、 andGroupAdminを使用する方が、もう少しクリーンな方法です。admin.site.unregisteradmin.site.register

また、Django が提供する多対多の優れたウィジェットと比べると、インターフェイスはかなり粗雑ですが、機能することに注意してください。

于 2015-07-13T20:05:16.027 に答える
0

にモデル フィールドを追加しますが、ModelAdminこれは効果がありません。代わりにすべきことは次のとおりです。

  • Modelモデルフィールドをどこかに追加します
  • 必要なすべてのフィールドを含むを作成し、ここのドキュメントこの例で説明されているメソッドをModelFormカスタマイズしますsave
  • ドキュメントでここにModelAdmin示されているように、このフォームを使用してください
于 2013-11-03T12:36:17.037 に答える