Search code examples
djangodjango-modelsdjango-formsdjango-sessions

DJANGO - Models.Forms - Usuarios


I'm trying to save and retrive the data owned by the user. I mean, in one Sqlite3 DB I store the tables for all users but each one has their one data store in it, how can I give each one their own data.

this are my models, view and form

MODEL.PY

    class Cuentas (models.Model):
            rubro_cta = models.ForeignKey(TipoC, on_delete=models.CASCADE, verbose_name = u'Tipo')
            sub_rubro_cta = models.ForeignKey(Sub_rubro, on_delete=models.CASCADE, verbose_name = u'Sub Rubro')
            titulo_cuenta = models.CharField(max_length=50)
            detalle_cuenta = models.CharField(max_length=60)
            importe_cuenta = models.FloatField()
            
            def save(self, *args, **kwargs):
                self.importe_cuenta = round(self.importe_cuenta, 2)
                super(Cuentas, self).save(*args, **kwargs)
            
            def __str__(self):
                return   self.detalle_cuenta

FORMS.PY

class CuentasForm (forms.ModelForm):
    class Meta:
        model = Cuentas
        fields = ['rubro_cta', 'sub_rubro_cta', 'detalle_cuenta', 'importe_cuenta']
        labels = {
            'rubro_cta': _('Cuenta'),
            'sub_rubro_cta': _('Tipo'),
            'detalle_cuenta': _('Detalle'),
            'importe_cuenta': _('Importe'),
        }

VIEWS.PY

@login_required
def carga (request):
    if request.method == 'POST':
        form = CuentasForm(request.POST)
        if form.is_valid:
            form.save()
            return redirect('balance')

    else:
        form = CuentasForm()
    
    return render (request, "ProyetoWebApp/carga.html",{"form": form})


Solution

  • you have to add a foreign key field to user in your Cuentas class:

    class Cuentas (models.Model):
        user = models.ForeignKey(User, models.CASCADE)
        ...
    

    in your view add this code for GET method:

    info = None
    if request.method == 'GET':
        info = Cuentas.objects.get(user=request.user)
    return render (request, "ProyetoWebApp/carga.html",{"form": form, "info":info})