gpt4 book ai didi

Django 表单 request.user

转载 作者:行者123 更新时间:2023-12-02 08:51:59 25 4
gpt4 key购买 nike

我的模型用户可以创建步枪,并且这支步枪显然与用户相关联。

class Gun(ImageModel):
user = models.ForeignKey(User)
...
...
...

我有另一个模型依赖于此,并且需要使用用户的步枪,但是当用户添加记录时我只想显示他的步枪。

mt模型如下

class Trophies(ImageModel):  
used_his = models.ForeignKey(Gun)

我的表单如下所示

from django.forms import ModelForm
from django import forms
from models import Trophies
from gunsafe.models import Gun
from django.contrib.auth.models import User

class TrophiesForm(request.user, ModelForm):
used_his = forms.ModelMultipleChoiceField(queryset=Gun.objects.filter(user__id=1))

def __init__(self, user, *args, **kwargs):
super(TrophiesForm, self).__init__(*args, **kwargs)
self.fields['used_his'].queryset = User.objects.filter(pk = user)

我想知道如何获取当前登录的用户 ID,而不是 user__id=1

这是 View 。

def edit(request, trophy_id, template_name='trophies/edit.html'):
trophy = Trophies.objects.get(pk=trophy_id)

if request.method == 'POST':
form = TrophiesForm(request.POST, request.FILES, instance=trophy)
if form.is_valid():
newform = form.save(commit=False)
newform.user = request.user
newform.save()
...
...

最佳答案

我认为您可以通过重写表单的 __init__() 方法、传入 User 实例并过滤 queryset 来实现此目的> 使用该用户。像这样的事情:

class TrophiesForm(ModelForm):
used_his = forms.ModelMultipleChoiceField(queryset=Gun.objects.filter(user__id=1))

def __init__(self, user, *args, **kwargs):
super(TrophiesForm, self).__init__(*args, **kwargs)
self.fields['used_his'].queryset = User.objects.filter(pk = user.id)

在您看来,您可以传入适当的(当前登录的)User 实例。

def my_trophies(request, *args, **kwargs):
user = request.user
form = TrophiesForm(user)
...

关于Django 表单 request.user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3532316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com