DJANGO - Models.Forms - 用户

DJANGO - Models.Forms - Usuarios

我正在尝试保存和检索用户拥有的数据。 我的意思是,在一个 Sqlite3 数据库中,我为所有用户存储表,但每个用户都有自己的一个数据存储,我如何给每个用户自己的数据。

这是我的模型、视图和表单

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})

您必须在您的 Cuentas 中为用户添加一个外键字段 class:

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

在您看来,为 GET 方法添加此代码:

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