Django:使用内置用户模型字段创建模型实例
Django: Create a Model instance with the build-in User Model fields
所以我有一个汽车模型。每辆提交的汽车都会分配给一个用户。此外,每个用户都有自己的仪表板,他们可以在其中提交汽车(仅限登录用户)。
from django.db import models
from django.contrib.auth.models import User
class Car(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
model_car= models.CharField(max_length=200)
description = models.TextField()
car_image = models.ImageField(null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True)
这是我的 forms.py 我制造汽车的地方。然后我将这个表单渲染到前端。
from django import forms
from django.forms import ModelForm
from tasks.models import Car
class CreateCarForm(ModelForm):
class Meta:
model=Car
fields='__all__'
exclude = ('user',)
Views.py
def create_car(request):
form = CreateCarForm()
if request.method=="POST":
form = CreateCarForm(request.POST,request.FILES)
if form.is_valid():
form.save()
messages.success(request,'Car was Created')
return redirect('create_car')
context={'form':form}
return render(request, 'dashboard/create_car.html',context)
现在它只是创建一个汽车实例,但没有选择用户。我想做的是创建这个 Car 实例,但在用户字段中,自动分配当前登录的用户用户名。
我怎样才能做到这一点?
您可以设置包裹在CreateCarForm
中的Car
实例的.user
实例:
from django.contrib.auth.decorators import login_required
<strong>@login_required</strong>
def create_car(request):
form = CreateCarForm()
if request.method=='POST':
form = CreateCarForm(request.POST,request.FILES)
if form.is_valid():
form<strong>.instance.user = request.user</strong>
form.save()
messages.success(request,'Car was Created')
return redirect('create_car')
context={'form':form}
return render(request, 'dashboard/create_car.html', context)
所以我有一个汽车模型。每辆提交的汽车都会分配给一个用户。此外,每个用户都有自己的仪表板,他们可以在其中提交汽车(仅限登录用户)。
from django.db import models
from django.contrib.auth.models import User
class Car(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
model_car= models.CharField(max_length=200)
description = models.TextField()
car_image = models.ImageField(null=True, blank=True)
date_created = models.DateTimeField(auto_now_add=True)
这是我的 forms.py 我制造汽车的地方。然后我将这个表单渲染到前端。
from django import forms
from django.forms import ModelForm
from tasks.models import Car
class CreateCarForm(ModelForm):
class Meta:
model=Car
fields='__all__'
exclude = ('user',)
Views.py
def create_car(request):
form = CreateCarForm()
if request.method=="POST":
form = CreateCarForm(request.POST,request.FILES)
if form.is_valid():
form.save()
messages.success(request,'Car was Created')
return redirect('create_car')
context={'form':form}
return render(request, 'dashboard/create_car.html',context)
现在它只是创建一个汽车实例,但没有选择用户。我想做的是创建这个 Car 实例,但在用户字段中,自动分配当前登录的用户用户名。
我怎样才能做到这一点?
您可以设置包裹在CreateCarForm
中的Car
实例的.user
实例:
from django.contrib.auth.decorators import login_required
<strong>@login_required</strong>
def create_car(request):
form = CreateCarForm()
if request.method=='POST':
form = CreateCarForm(request.POST,request.FILES)
if form.is_valid():
form<strong>.instance.user = request.user</strong>
form.save()
messages.success(request,'Car was Created')
return redirect('create_car')
context={'form':form}
return render(request, 'dashboard/create_car.html', context)