Ya he solucionado el problema de conseguir la identificación del objeto que está siendo editado utilizando este código:¿Cómo obtengo el ID del objeto real en una página de administración de Django (dentro de 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)
embargo, la int (request.path.split ("/") [4]) es realmente feo. Quiero saber cómo obtengo el ID del Django AdminModel. Estoy seguro de que está en algún lugar dentro de ella, ¿alguien sabe?
¡Gracias de antemano! ; D
¿Dónde puedo encontrar algunos documentos sobre el get_form? Intenté pasar el objeto y funcionó, pero no tengo idea de cómo usar el método para sobrescribir el queryset del campo de formulario allí ... =/ –
Vea el código original en http: //code.djangoproject. com/browser/django/trunk/django/contrib/admin/options.py. Si 'form' sería la forma devuelta por el método orignal' get_form', 'form.base_fields' debería ser un diccionario de los objetos de campo. –
Ok! ¡Gracias hombre! Lo echaré un vistazo y publicaré aquí la solución. Si lo logro! ¡Gracias de nuevo! ; D –