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)
Вернуться на верх