Django: Создайте экземпляр модели со встроенными полями модели пользователя
Итак, у меня есть модель автомобиля. И каждый автомобиль, который подается, назначается пользователю. Также у каждого пользователя есть своя панель, где он может подавать автомобили (только для зарегистрированных пользователей).
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)
Теперь он просто создает экземпляр автомобиля, но без выбранного пользователя. Я хотел бы создать экземпляр автомобиля, но в поле пользователя автоматически назначить имя пользователя текущего вошедшего пользователя.
Как я могу этого добиться?
Вы можете установить .user
экземпляр Car
, обернутый в CreateCarForm
:
from django.contrib.auth.decorators import login_required
@login_required
def create_car(request):
form = CreateCarForm()
if request.method=='POST':
form = CreateCarForm(request.POST,request.FILES)
if form.is_valid():
form.instance.user = request.user
form.save()
messages.success(request,'Car was Created')
return redirect('create_car')
context={'form':form}
return render(request, 'dashboard/create_car.html', context)