【问题标题】:Django: Create a Model instance with the build-in User Model fieldsDjango:使用内置的用户模型字段创建模型实例
【发布时间】:2021-11-16 19:31:38
【问题描述】:

所以我有一个汽车模型。并且每辆提交的汽车都分配给一个用户。此外,每个用户都有自己的仪表板,他们可以在其中提交汽车(仅适用于登录用户)。

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 实例,但在用户字段中,自动分配当前登录的用户用户名。

我怎样才能做到这一点?

【问题讨论】:

    标签: python django model


    【解决方案1】:

    您可以设置Car实例的.user实例包裹在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)

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 2014-02-06
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 2013-02-11
      • 2017-06-27
      • 1970-01-01
      相关资源
      最近更新 更多