Django 如何将模型字段的值设置为当前登录的用户?德扬戈

Django 如何将模型字段的值设置为当前登录的用户?德扬戈,django,default-value,Django,Default Value,我有一个事件模型,它有一个字段创建者作为ForeignKey,属性为User。在views.py中,我创建了create_event,它使用EventForm创建事件。如何将EventForm中创建者的默认值设置为当前登录的用户?它默认设置为admin,我不想每次创建事件时都手动设置它,因为如果创建了很多用户,这会很烦人 型号。py: 类事件(models.Model): 运动=( (‘足球’、‘足球’), (“排球”、“排球”), (“篮球”、“篮球”), (“五人制”、“五人制”), (“网

我有一个事件模型,它有一个字段创建者作为ForeignKey,属性为User。在views.py中,我创建了create_event,它使用
EventForm
创建事件。如何将
EventForm
中创建者的默认值设置为当前登录的用户?它默认设置为admin,我不想每次创建事件时都手动设置它,因为如果创建了很多用户,这会很烦人

型号。py:

类事件(models.Model):
运动=(
(‘足球’、‘足球’),
(“排球”、“排球”),
(“篮球”、“篮球”),
(“五人制”、“五人制”),
(“网球”、“网球”),
(“手球”、“手球”),
(“冰球”、“冰球”),
(“彩弹”、“彩弹”)
)
creator=models.ForeignKey(用户,null=True,on\u delete=models.SET\u null)
sport=models.CharField(max_length=20,null=True,choices=sport)
事件名称=models.CharField(最大长度=30)
event\u date=models.DateTimeField(默认值为date.today())
end\u event\u date=models.DateTimeField(默认值为date.today())
当前_成员=models.IntegerField(默认值=1)
成员总数=models.IntegerField(默认值=0)
事件位置=models.CharField(最大长度=50)
成本=型号.浮动字段(默认值=0,最大长度=5)
description=models.CharField(最大长度=300,空白=True)
定义(自我):
返回self.event\u名称
视图。py:

@login\u必需(login\u url='login')
def创建_事件(请求):
form=EventForm()
如果request.method==“POST”:
form=EventForm(request.POST)
如果form.is_有效():
form.save()
返回重定向(“/”)
上下文={'form':form}
返回呈现(请求“events/create_event.html”上下文)
forms.py:

class事件形式(ModelForm):
类元:
模型=事件
字段=[“创建者”、“运动”、“事件名称”、“事件日期”、“事件结束日期”、“成员总数”、“当前成员”、“事件地点”、“成本”、“描述”]

首先,从模型表单中删除
创建者
字段

class EventForm(ModelForm):
    class Meta:
        model = Event
        fields = [
            "creator", # remove this field
            "sport",
            "event_name",
            "event_date",
            "end_event_date",
            "total_members",
            "current_members",
            "event_location",
            "cost",
            "description",
        ]

你在这里的期望并不明显。要将
creator
保存为当前登录的用户,您可以执行以下操作:
form.save(committed=False)
,然后将
creator
设置为当前用户
form.creator=request.user
,最后保存表单
form.save()
。但是,“它被设置为默认管理员”意味着您以管理员身份登录,那么您在“当前登录的用户”中所期望的是什么呢?您是对的,现在它可以工作了。谢谢如果用户以管理员身份登录,它仍然将
creator
设置为管理员用户,OP说“它被设置为默认管理员,我不想每次创建一个偶数时手动设置它”。@Charnel“如何将EventForm中creator的默认值设置为当前登录用户?”?是的,标题和详细说明询问有争议的事情。
@login_required(login_url='login')
def create_event(request):
    form = EventForm()
    if request.method == 'POST':
        form = EventForm(request.POST)
        if form.is_valid():
            event = form.save(commit=False)
            event.creator = request.user
            event.save()
            return redirect('/')

    context = {'form': form}
    return render(request, 'events/create_event.html', context)