createview - formview django example
Django: ¿Puedo usar CreateView y DeleteView en la misma forma? (1)
Primero agregue todos los objetos existentes al contexto de CreateView y actualice la plantilla HTML para representarlos como una tabla sobre el formulario. Luego, cree una DeleteView y asigne una URL a ella.
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"),
Puntos de vista
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)
Modelo
<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>
Quiero mostrar dos botones en la misma forma, el primer botón que quiero usar para eliminar el objeto y el segundo botón para crear un objeto.
Por ejemplo, quiero crear un modelo simple como:
models.py:
class UrlStatus_Proxy(models.Model):
urls = models.URLField(u''Site URL'', max_length=100, null=True, unique=True)
status_url = models.CharField(u''Site'', max_length=20, choices=STATUS_URL)
urls.py
url(r''^url_status/$'',ProxyUrlCreateView.as_view(model=UrlStatus_Proxy,
get_success_url=lambda: reverse(''proxy_url_status''),template_name=''proxy_url_status.html''), name=''proxy_url_status''),
proxy_url_status.html
<form action="" method="post">
{{form.as_p}}
<input type="submit" name="delete" id="delete">
<input type="submit" name="add" id="add">
</form>
Si no tengo objetos en la base de datos, entonces no haga nada, solo visualice el formulario de Modelo, y tiene solo una opción para agregar un nuevo objeto en la base de datos.
Si tengo objetos en la base de datos, entonces enlista un objeto como tabla y en la tabla tengo un campo de casilla de verificación. Cuando revisé uno de los objetos y hago clic en el botón "eliminar" quiero eliminar ese objeto.
En el segundo caso, si relleno el campo de entrada del objeto y presiono el botón "agregar", quiero agregar el objeto en la base.
¿Cómo puedo hacerlo?