Django如何在保存到数据库之前连接表格数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django如何在保存到数据库之前连接表格数据相关的知识,希望对你有一定的参考价值。

我正在为许多用户构建预算网络应用程序。用户创建帐户以跟踪不同的值。问题是我无法制作组合键,而需要AccountName作为主键。

这带来了挑战。如果用户使用相同的帐户名怎么办?由于某些用户可能创建“现金”帐户,因此会发生这种情况。我对这个问题的解决方案是将数据库中的帐户命名为AccountName + userid。如何将表单中的用户AccountName修改为AccountName + userid?

数据库中所需的AccountName示例:Cash1,Cash2

models.py

class Account(models.Model):
    DateCreated = models.DateTimeField()
    AccountName = models.CharField(max_length= 100, primary_key=True)
    UserID = models.ForeignKey(MyUser, on_delete=models.CASCADE)      
    Type = models.CharField(max_length= 20)
    Balance = models.DecimalField(max_digits=19, decimal_places=8)
    Value = models.DecimalField(max_digits=19, decimal_places=8)

Views.py

    @login_required
    def func_AccountsView(request):
        # This filters users accounts so they can only see their own accounts
        user_accounts = Account.objects.filter(UserID_id=request.user).all()

        if request.method == 'POST':
            form = AddAccount(request.POST)
            if form.is_valid():
                account = form.save(commit=False)
                account.UserID = request.user
                account.AccountName = AccountName + str(request.user) # WHY DOES THIS NOT WORK?
                account.save()
                return redirect('accounts')
            else:
                form = AddAccount()
        else:
            form = AddAccount()


        data = {
            'form':form,
            'data': user_accounts
            }
        return render(request, 'NetWorth/accounts.html', data)

forms.py

        class AddAccount(forms.ModelForm):
            ''' This is the form that handles additions of an account '''
            class Meta:
                model = Account
                fields = ['AccountName','DateCreated', 'Type', 'Balance', 'Value']
答案

request.user将不起作用,因为它是包含其他字段的对象。

要解决您的问题,请替换,

account.AccountName = AccountName + str(request.user.username)

以上是关于Django如何在保存到数据库之前连接表格数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 VBA 在 Excel 中添加连接(到外部数据源)并将其保存到该 Excel 电子表格的连接列表

如何在将密码保存到用户模型 Django 之前对其进行加密?

如何在一个提交中保存父母、孩子和孙子表格 - django

Django,模型表格未在数据库中保存数据

django 编辑表单,数据怎么回显呀

纯Django表格绑定用户提交表格和视图