Django 表单 request.user

标签 django django-forms

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

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/

相关文章:

html - Django 文本字段拉伸(stretch) html 表格的宽度?我怎样才能防止这种情况发生?

python - Django : Form data not saving

django - 内联表单集在保存时返回空列表?

Django-OAuth-ToolKit : Generating access token's for multiple resources/services using client credentials grant type of OAuth2. 0

python - Django 模型 sqlmigrate - 参数太少

django - django 内联表单集的单选按钮

python - Django Rest Framework 序列化器作为表单和嵌套关系

Django UpdateView 不允许空字段

Django allauth 社交登录 : automatically linking social site profiles using the registered email

python - 将 Google Picasa API 与 Python 结合使用