登录用户有没有办法将数据库存储在他们自己的django帐户中



我正在做一个django项目来存储我的日常开支。

models.py:

class BudgetInfo(models.Model):
items= models.CharField(max_length=20)
cost= models.FloatField(blank=False, null=True)
date_added= models.DateField()
user= models.ForeignKey(User, on_delete= models.CASCADE)

view.py:

def login_view(request):
if request.method == 'POST':
form= AuthenticationForm(data=request.POST)
if form.is_valid():
user=form.get_user()
login(request,user)
return render (request, 'tasks_notes/index.html')
def additem_view(request):
name = request.POST['expense_name']    
expense_cost = request.POST['cost']  
expense_date = request.POST['expense_date']
create=BudgetInfo.objects.create(user= request.user,items=name,cost=expense_cost,date_added=expense_date)
create.save()
return redirect('app')
def signup_view(request):
if request.method == 'POST':
form= RegisterationForm(request.POST)
if form.is_valid():
user=form.save()
login(request,user)
return redirect('login')
else: 
form=RegisterationForm()
return render(request, 'tasks_notes/signup.html',{'form':form})

forms.py:

class RegisterationForm(UserCreationForm):
email=forms.EmailField(required=True)
class Meta:
model=User
fields=(
'username',
'first_name',
'last_name',
'email',
'password1',
'password2'
)
def save(self, commit=True):
user=super(RegisterationForm, self).save(commit=False)
user.first_name=self.cleaned_data['first_name']
user.last_name=self.cleaned_data['last_name']
user.email=self.cleaned_data['email']
if commit:
user.save()
return user

我想把每个用户的日常开支存储在自己的模型中。但是每当我试图保存数据时,每个实例(即使是同一个用户(都会被创建。我希望每个用户都有一个模型实例。我怎样才能做到这一点?

create=BudgetInfo.objects.create(user=request.user,items=name,cost=expense_cost,date_added=expense_date)

不要在上面使用.create的表中创建每一行,只需通过筛选当前用户来更新行。

balance = [str(obj.cost) for obj in BudgetInfo.objects.filter(user=request.user)]

从上面的行中,您可以获得登录用户的当前余额。现在,只需使用.update来更新日常支出,而无需为同一用户创建新行。

BudgerInfo.objects.filter(user=request.user).update(cost=int(balance[0]) + expense_cost)

当前登录用户所在的行通过将expense_cost添加到当前余额中进行更新

相关内容

最新更新