First add all existing objects to the context of CreateView and update the HTML template to render these as a table above the form. Then create a DeleteView and map a URL to it.
URLs
url(r"^url_status/$",
ProxyUrlCreateView.as_view(),
name="proxy_url_status"),
url(r"^url_status/(?P<pk>\d+)/delete/?$",
DeleteProxyURLView.as_view(),
name="delete_proxy"),
Views
from django.views.generic import DeleteView
from django.core.urlresolvers import reverse
# add existing objects to the context, making them available to the template
class ProxyUrlCreateView(CreateView):
model = UrlStatus_Proxy
template_name = "proxy_url_status.html"
def get_success_url(self):
return reverse("proxy_url_status")
def get_context_data(self, **kwargs):
kwargs["object_list"] = UrlStatus_Proxy.objects.all()
return super(ProxyUrlCreateView, self).get_context_data(**kwargs)
class DeleteProxyURLView(DeleteView):
model = UrlStatus_Proxy
def get_success_url(self):
"""
Redirect to the page listing all of the proxy urls
"""
return reverse("proxy_url_status")
def get(self, *args, **kwargs):
"""
This has been overriden because by default
DeleteView doesn't work with GET requests
"""
return self.delete(*args, **kwargs)
Template
<table>
{% for proxy_url in object_list %}
<tr>
<td>{{ proxy_url.urls }}</td>
<td><a href="{% url delete_proxy %}">Delete</a></td>
</tr>
{% endfor %}
</table>
<form action="" method="post">
{{form.as_p}}
<input type="submit" name="add" id="add">
</form>