Reputation: 51
model.py
class Peer(models.Model):
router = models.ForeignKey(Router, on_delete=models.CASCADE)
ipv4_address = models.CharField(max_length=250)
remote_as = models.CharField(max_length=250)
I have a custom button in Django admin Change form
<input type="submit" value="Test Peer" name="_peer-test">
Then in admin.py
def response_change(self, request, obj):
if "_peer-test" in request.POST:
self.message_user(request, "Peer Tested")
url = request.POST.get('obj', '/peeringmanager/export')
remote_as = obj.remote_as
url += "?remote_as={}".format(remote_as)
return HttpResponseRedirect(url)
So I sent the data (remote_as) from the obj to another view
views.py
def export(request):
remote_as = request.GET.get('remote_as','')
selected_peer = Peer.objects.filter(remote_as__exact=remote_as)
template= loader.get_template('delete-peer.html')
content= {
'selected_peer':selected_peer,
}
return HttpResponse(template.render(content,request))
Here I want to use remote_as object to get all object in the form related to that Remote_as and sent it to a html.
delete-peer.html
{% block content %}
{% for peer in content %}
<p>{{ peer.remote_as }}</p>
{% endfor %}
{% endblock %}
But I don't get any Data in HTML. any Idea? of a better way? Right now it results in an empty html
Upvotes: 1
Views: 1758
Reputation: 5669
The template doesn't know content var, you need to specify vars listed in content dictionary:
{
'selected_peer': selected_peer,
}
Put selected_peet instead of content:
{% block content %}
{% for peer in selected_peer %}
<p>{{ peer.remote_as }}</p>
{% endfor %}
{% endblock %}
Upvotes: 1