Python 如何使用Django将用户分配给新对象?
我正在尝试将当前登录的用户分配给Django中的Python 如何使用Django将用户分配给新对象?,python,django,Python,Django,我正在尝试将当前登录的用户分配给Django中的帐户模型对象,但由于某些原因,没有分配该用户。我确实尝试了form.user=user.objects.get(username=request.user),但问题是相同的 我怎么能这么做 这是我的代码,登录的用户可以创建模型的新实例,但实例。用户保持为空 型号.py class Account(models.Model): name = models.CharField(max_length=100, null=True, blank=F
帐户
模型对象,但由于某些原因,没有分配该用户。我确实尝试了form.user=user.objects.get(username=request.user)
,但问题是相同的
我怎么能这么做
这是我的代码,登录的用户可以创建模型的新实例,但实例。用户保持为空
型号.py
class Account(models.Model):
name = models.CharField(max_length=100, null=True, blank=False)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True
)
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['name']
def create_account(request):
if request.method == 'POST':
form = AccountForm(request.POST)
if form.is_valid():
form.user = request.user
print('user', request.user) # Return the user name correctly
form.save()
return redirect('accounts')
else:
form = AccountForm()
return render(request,
'account/account_create.html',
{
'form': form
})
forms.py
class Account(models.Model):
name = models.CharField(max_length=100, null=True, blank=False)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True
)
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['name']
def create_account(request):
if request.method == 'POST':
form = AccountForm(request.POST)
if form.is_valid():
form.user = request.user
print('user', request.user) # Return the user name correctly
form.save()
return redirect('accounts')
else:
form = AccountForm()
return render(request,
'account/account_create.html',
{
'form': form
})
view.py
class Account(models.Model):
name = models.CharField(max_length=100, null=True, blank=False)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null=True
)
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['name']
def create_account(request):
if request.method == 'POST':
form = AccountForm(request.POST)
if form.is_valid():
form.user = request.user
print('user', request.user) # Return the user name correctly
form.save()
return redirect('accounts')
else:
form = AccountForm()
return render(request,
'account/account_create.html',
{
'form': form
})
account\u create.html
<h1>Create new account</h1>
<form action="{% url 'account_create' %}"
method="post">
{% csrf_token %}
{{ form.as_p }}
<button class="button" type="submit">Create</button>
</form>
创建新帐户
{%csrf_令牌%}
{{form.as_p}}
创造
您应该使用以下命令,而不是form.user=request.user
:
form = AccountForm(request.POST)
if form.is_valid():
form.instance.user = request.user
或使用:
您不应使用form.user=request.user
,而应使用:
form = AccountForm(request.POST)
if form.is_valid():
form.instance.user = request.user
或使用:
嗨,我不需要自定义用户模型噢,你是说settings.py带有AUTH\u user\u MODEL
对吗?嗨,我不需要自定义用户模型噢,你是说settings.py带有AUTH\u user\u MODEL
对吗?现在可以了)谢谢你提供的替代解决方案现在可以了)谢谢你提供的替代解决方案