Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

205
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!