Mensajes: 6
Temas: 1
Registro en: Oct 2021
Reputación:
0
hola gente antes melodiava el foro por temas de hacking hoy les vengo a pedir ayuda por un proyecto para la escuela
nuestro proyecto es hacerles una app para que puedan mantener el stock de la mercaderia que tienen
paso link de git en el rar esta todo..
https://github.com/Nashrc/conin-stock
y aqui pongo las imagenes de los codigos que nose como hacer
No tengo idea como hacer para que sume o reste el stock
yo creo que en la parte de las views es donde tengo que resolver el problema pero no se como
alguien me da una mano??
desde ya muchas gracias
Mensajes: 1.306
Temas: 3
Registro en: Feb 2016
Reputación:
71
Hola, bienvenido.
No veo la necesidad de crear los campos "suma" y "resta" en el modelo productos. Si ya tenés el campo "cantidad", deberías crear otro ModelForm (similar al productosForm), pero solo mostrando el campo "cantidad" para que el usuario pueda editar ese valor.
Saludos
Mensajes: 6
Temas: 1
Registro en: Oct 2021
Reputación:
0
(01-11-2021, 12:55 PM)Francisco escribió: Hola, bienvenido.
No veo la necesidad de crear los campos "suma" y "resta" en el modelo productos. Si ya tenés el campo "cantidad", deberías crear otro ModelForm (similar al productosForm), pero solo mostrando el campo "cantidad" para que el usuario pueda editar ese valor.
Saludos
dale gracias por tu ayuda super agradecido porque no encuentro nadie que me oriente.. el tema es que no tengo idea como relacionarlas me ayudas?
aparte de cantidad algo mas ? id o que info tengo que poner. como prosigo despues de aver creado el modelForm?
Mensajes: 1.306
Temas: 3
Registro en: Feb 2016
Reputación:
71
Hola.
Después de crear el ModelForm deberías procesarlo en una vista, que será una vista muy parecida a las que ya tenés para tu productosForm. Tal vez te convenga primero hacer un tutorial de Django para tener los conceptos fundamentales y poder implementarlo por tus propios medios.
Saludos
Mensajes: 6
Temas: 1
Registro en: Oct 2021
Reputación:
0
(01-11-2021, 11:25 PM)Francisco escribió: Hola.
Después de crear el ModelForm deberías procesarlo en una vista, que será una vista muy parecida a las que ya tenés para tu productosForm. Tal vez te convenga primero hacer un tutorial de Django para tener los conceptos fundamentales y poder implementarlo por tus propios medios.
Saludos
dale gracias hasta ahroa pude modificar y eliminar.. asi que voy bien..
una duda si yo quiera que sume? en ves de modificar
Código: def modificar(request, id_prod):
resultado= prod.objects.get(id_prod=id_prod)
data = {
'form':productosForm(instance = resultado )
}
if request.method == 'POST':
form = productosForm(data=request.POST,instance=resultado)
if form.is_valid():
form.save()
return redirect('stock:productos')
return render(request, 'C:/conin/stock/templates/stock/modificar.html', data)
como creo ese campo que diga cantidad = cantidad + cantidad
si tenia 8 = 8 + 2
y que lo guarde eso no entiendo.. saludos.
Mensajes: 1.306
Temas: 3
Registro en: Feb 2016
Reputación:
71
Hola.
Si querés que el usuario pueda editar el campo "cantidad", ese código ya te debería estar funcionando. Me parece que es la opción más rápida. Ahora, si necesitás que el usuario ponga la cantidad que quiere sumar o restar, entonces deberías crear un formulario común (no un ModelForm) con un campo de suma y uno de resta, luego obtener el número ingresado en el campo y sumarlo/restarlo al producto. Sería algo así:
Código: def modificar(request, id_prod):
producto = prod.objects.get(id_prod=id_prod)
data = {
'form': FormularioSumaResta()
}
if request.method == 'POST':
form = FormularioSumaResta(request.POST)
if form.is_valid():
suma = form.cleaned_data["suma"]
producto.cantidad += suma
producto.save()
return redirect('stock:productos')
return render(request, 'C:/conin/stock/templates/stock/modificar.html', data)
Ahí estaría considerando únicamente la suma, deberías hacer lo mismo con la resta, o tal vez usar un solo campo de texto y permitirle al usuario seleccionar si es suma o resta con algún otro widget.
Saludos
Mensajes: 6
Temas: 1
Registro en: Oct 2021
Reputación:
0
gracias por la info perdon pero soy muy nuevo.. lo de agregar a mano funciona pero queda mejor ocn el sumar y restar.. no entiendo mucho django me oriento como me explicas.. pero nose donde poner el resto de la infomacion realize esto
en el views :
Código: def modificar2(request, id_prod):
producto = prod.objects.get(id_prod=id_prod)
data = {
'form': FormularioSumaResta()
}
if request.method == 'POST':
form = FormularioSumaResta(request.POST)
if form.is_valid():
suma = form.cleaned_data["suma"]
producto.cantidad += suma
producto.save()
return redirect('stock:productos')
return render(request, 'C:/conin/stock/templates/stock/modificar2.html', data)
en la pagina para que me lleve a modificarlo :
Código: {% block content %}
<tbody>
<tr>Deposito:<br>
{% for producto in productos %}
<td>- id: {{producto.id_prod}}</td><br>
<td>- producto: {{producto.producto}}</td><br>
<td>- cantidad: {{producto.cantidad}}</td><br>
<td>- <a href="modificar2.html/{{producto.id_prod}}">Modificar2</a> </td><br>
<td>- <a href="eliminar.html/{{producto.id_prod}}">eliminar</a> </td><br><br>
{% endfor %}
en el models:
Código: from django.db import models
class productos(models.Model):
id_prod = models.AutoField(primary_key=True,)
producto = models.CharField(max_length=100)
cantidad = models.IntegerField()
vencimiento = models.CharField(max_length=10)
observacion = models.CharField(max_length=100)
sumar = models.IntegerField(default=0)
restar = models.IntegerField(default=0)
en el form:
Código: class FormularioSumaResta(forms.ModelForm):
class Meta:
model = productos
fields = [
'id_prod',
'sumar',
'restar',
]
labels = {
'id_prod' : 'Id_prod',
'sumar': 'Sumar',
'restar' : 'Restar',
}
widgets = {
'id_prod' : forms.TextInput(attrs={'class':'form-control'}),
'sumar' : forms.TextInput(attrs={'class':'form-control'}),
'restar' : forms.TextInput(attrs={'class':'form-control'}),
}
en las urls :
Código: from django.urls import path
from . import views
app_name = "stock"
urlpatterns = [
path('', views.index, name="index"),
path('productos_list.html', views.productos, name="productos"),
path('productos_add.html', views.agregar, name="Checkin"),
path('modificar.html/<id_prod>/', views.modificar, name="modificar"),
path('eliminar.html/<id_prod>/', views.eliminar, name="eliminar"),
path('modificar2.html/<id_prod>/', views.modificar2, name="modificar2"),
]
de todo esto que tengo mal? o esta todo mal?
Mensajes: 1.306
Temas: 3
Registro en: Feb 2016
Reputación:
71
Hola. No te preocupes, estamos para aprender.
El formulario solo contendrá dos campos, suma y resta, así que no hay necesidad de que sea un ModelForm. Crealo como un formulario tradicional:
Código: class FormularioSumaResta(forms.Form):
suma = forms.IntegerField()
resta = forms.IntegerField()
El HTML para mostrar este formulario sería igual que el que estás usando para mostrar el ModelForm.
Saludos
Mensajes: 6
Temas: 1
Registro en: Oct 2021
Reputación:
0
perdon pero soy muy nuevo en esto o sea eso lo pongo en el form? y para que no me de error donde mas tendria que ponerlo? perdon por hacerte hacer casi mi trabajo pero soy muy novato!! y voy entendiendo de apoco las cosas
Mensajes: 1.306
Temas: 3
Registro en: Feb 2016
Reputación:
71
04-11-2021, 12:44 PM
(Última modificación: 04-11-2021, 12:44 PM por Francisco.)
Eso ponelo en tu forms.py, luego importalo en el views:
Código: from .forms import FormularioSumaResta
Y usalo en tu modificar2 como hiciste antes:
Código: def modificar2(request, id_prod):
producto = prod.objects.get(id_prod=id_prod)
data = {
'form': FormularioSumaResta()
}
if request.method == 'POST':
form = FormularioSumaResta(request.POST)
if form.is_valid():
suma = form.cleaned_data["suma"]
producto.cantidad += suma
producto.save()
return redirect('stock:productos')
return render(request, 'C:/conin/stock/templates/stock/modificar2.html', data)
En el modificar2.html deberías tener algo así:
Código: <form method="post">
{% csrf_token %}
{{ form.as_p }}
</form>
Saludos
|