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 电子表格的连接列表