[Fixed]-How to target a specific object with Django templates

1👍

You can either store the first three Features in separate variables in your context or add checks to your template loop like {% if forloop.first %} or {% if forloop.counter == 2 %}.

0👍

If all you want is to not have the

  selected_feature
  latest_feature

these two records out of the past_features queryset, then you can use exclude on the past_features query and pass the id’s of the selected_features and latest_feature objects.

The views.py would look like:

 def feature_detail(request, pk):
    selected_feature = get_object_or_404(Feature, pk=pk)
    latest_feature = Feature.objects.order_by('-id')[0]
    # Collect all the id's present in the latest_feature

    excluded_ids = [record.pk for record in latest_feature]
    excluded_ids.append(selected_feature.pk)

    #This would only return the objects excluding the id present in the list
    past_features = Feature.objects.order_by('-pub_date').exclude(id__in=excluded_ids)
    test = Feature.objects.last()
    context = {'selected_feature': selected_feature,
               'latest_feature': latest_feature,
               'past_features': past_features,
               'test': test}
 return render(request, 'gp/feature_detail.html', context)

Django provides a rich ORM and well documented, go through the Queryset options for further information.

👤kt14

0👍

For access to a specific object in Django templates see following example:

For access to first object you can use {{ students.0 }}

For access to second object you can use {{ students.1 }}

For access to a specific field for example firstname in object 4 you can use {{ students.3.firstname }}

For access to image field in second object you can use {{ students.1.photo.url }}

For access to id in first object you can use {{ students.0.id }}

👤Darwin

Leave a comment