# Forms

## UserObjectPermissionsForm

class guardian.forms.UserObjectPermissionsForm(user, *args, **kwargs)

  Bases: `BaseObjectPermissionsForm`

  Object level permissions management form for usage with `User` instances.

  Example usage:

      from django.shortcuts import get_object_or_404
      from myapp.models import Post
      from guardian.forms import UserObjectPermissionsForm
      from django.contrib.auth.models import User

      def my_view(request, post_slug, user_id):
          user = get_object_or_404(User, id=user_id)
          post = get_object_or_404(Post, slug=post_slug)
          form = UserObjectPermissionsForm(user, post, request.POST or None)
          if request.method == 'POST' and form.is_valid():
              form.save_obj_perms()
          ...

  Constructor for BaseObjectPermissionsForm.

  Parameters:

    obj – Any instance which form would use to manage object permissions”

  get_obj_perms_field_initial()

    Returns initial object permissions management field choices. Default: `[]` (empty list).

  property media

    Return all media required to render the widgets on this form.

  save_obj_perms()

    Saves selected object permissions by creating new ones and removing those which were not selected but already exists.

    Should be called after form is validated.

## GroupObjectPermissionsForm

class guardian.forms.GroupObjectPermissionsForm(group, *args, **kwargs)

  Bases: `BaseObjectPermissionsForm`

  Object level permissions management form for usage with `Group` instances.

  Example usage:

      from django.shortcuts import get_object_or_404
      from myapp.models import Post
      from guardian.forms import GroupObjectPermissionsForm
      from guardian.models import Group

      def my_view(request, post_slug, group_id):
          group = get_object_or_404(Group, id=group_id)
          post = get_object_or_404(Post, slug=post_slug)
          form = GroupObjectPermissionsForm(group, post, request.POST or None)
          if request.method == 'POST' and form.is_valid():
              form.save_obj_perms()
          ...

  Constructor for BaseObjectPermissionsForm.

  Parameters:

    obj – Any instance which form would use to manage object permissions”

  get_obj_perms_field_initial()

    Returns initial object permissions management field choices. Default: `[]` (empty list).

  property media

    Return all media required to render the widgets on this form.

  save_obj_perms()

    Saves selected object permissions by creating new ones and removing those which were not selected but already exists.

    Should be called after form is validated.

## BaseObjectPermissionsForm

class guardian.forms.BaseObjectPermissionsForm(obj, *args, **kwargs)

  Base form for object permissions management. Needs to be extended for usage with users and/or groups.

  Constructor for BaseObjectPermissionsForm.

  Parameters:

    obj – Any instance which form would use to manage object permissions”

  are_obj_perms_required()

    Indicates if at least one object permission should be required. Default: `False`.

  get_obj_perms_field()

    Returns field instance for object permissions management. May be replaced entirely.

  get_obj_perms_field_choices()

    Returns choices for object permissions management field. Default: list of tuples `(codename, name)` for each `Permission` instance for the managed object.

  get_obj_perms_field_class()

    Returns object permissions management field’s base class. Default: `django.forms.MultipleChoiceField`.

  get_obj_perms_field_initial()

    Returns initial object permissions management field choices. Default: `[]` (empty list).

  get_obj_perms_field_label()

    Returns label of the object permissions management field. Defualt: `_("Permissions")` (marked to be translated).

  get_obj_perms_field_name()

    Returns name of the object permissions management field. Default: `permission`.

  get_obj_perms_field_widget()

    Returns object permissions management field’s widget base class. Default: `django.forms.SelectMultiple`.

  property media

    Return all media required to render the widgets on this form.

  save_obj_perms()

    Must be implemented in concrete form class. This method should store selected object permissions.