Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

196
Vistas
Cómo consultar usando un campo diferente que no sea el campo PK (clave principal) en DetailView

url.py

 urlpatterns = [ url(r'^employee/(?P<emp_no>[0-9]+)/$', TitleDetail.as_view(), name='e-title'), # /employee/10001/ ]

vistas.py

 class TitleDetail(DetailView): model = Title pk_url_kwarg = "emp_no" def get_context_data(self, **kwargs): context = super(TitleDetail, self).get_context_data(**kwargs) context['title_list'] = Title.objects.filter(emp_no_id=self.kwargs['emp_no']) return context

modelos.py

 class Title(models.Model): emp_no = models.ForeignKey(Employee) title = models.CharField(max_length=50) from_date = models.DateField() to_date = models.DateField()

datos de muestra en la base de datos:

 id title from_date to_date emp_no_id ---------- --------------- ---------- ---------- ---------- 1 Senior Engineer 1986-06-26 9999-01-01 10001 2 Staff 1996-08-03 9999-01-01 10002

por que me da

PÁGINA NO ENCONTRADA: No se encontró ningún título que coincida con la consulta.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

De hecho, no tiene que anular el método get_object , lo que debe hacer es simplemente definir un campo de slug adecuado (no pk_url_kwarg ) como este:

 class TitleDetail(DetailView): model = Title slug_field = "emp_no" slug_url_kwarg = "emp_no"

Y aquí está el código fuente si desea ver qué sucedió detrás.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede anular el método get_object() para hacer lo que quiera:

 def get_object(self, queryset=None): queryset = self.get_queryset() if queryset is None else queryset return get_object_or_404(queryset, emp_no_id=self.kwargs['emp_no'])

En caso de que no lo hayas visto antes, consulta la documentación de get_object_or_404() .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda