Как мне получить фактический идентификатор объекта на странице администратора Django (внутри formfield_for_foreignkey)?

Я уже решил проблему получения идентификатора объекта, редактируемого с помощью этого кода:

class CompanyUserInline(admin.StackedInline):
    """
    Defines tabular rules for editing company users direct in company admin
    """
    model = CompanyUser

    def formfield_for_foreignkey(self, db_field, request, **kwargs):

        if db_field.name == "user":
            users = User.objects.filter( Q(is_superuser=False) )
            query = Q()
            for u in users:
                aux = CompanyUser.objects.filter(user=u)
                if aux.count() == 0:
                    query |= Q(pk=u.id)

            try:
                cpu = CompanyUser.objects.filter(company__id=int(request.path.split('/')[4]))
                for p in cpu:
                    query |= Q(pk=p.user.id)
            except:
                pass

            kwargs["queryset"] = User.objects.filter(query).order_by('username')

        return super(CompanyUserInline, self).formfield_for_foreignkey(db_field, request, **kwargs)

Но, int (request.path.split ('/') [4]) действительно уродлив. Я хочу знать, как я получаю идентификатор из Django AdminModel. Я уверен, что он где-то внутри, кто-нибудь знает?

Заранее спасибо!; D

8
задан Jayme Tosi Neto 23 October 2015 в 12:58
поделиться