使用 django.form 时获取保存的 django 用户
Get the django user in save while using django.form
我在使用 Django 表单时在 Django 中获取用户时遇到问题。我的代码看起来像这样。
观点:
@login_required
def something(request):
item = ItemForm(request.POST)
item.save(user=request.user)
形式:
class ItemForm(ModelForm):
class Meta:
model = Item
fields = '__all__'
def save(self, *args, **kwargs):
user = kwargs['user']
super(ItemForm, self).save(user=user)
模特
class Item(models.Model):
field = models.CharField(max_length=100,)
field2 = models.CharField(max_length=100,)
def check_permissions(self, user):
return user.groups.filter(name='group').exists()
def save(self, *args, **kwargs):
if self.check_permissions(kwargs['user']):
super(Item, self).save()
我的问题是当我在 ItemForm 中调用默认保存时出现错误,因为用户参数是意外的。我需要模型中的用户进行权限检查,但我不知道如何获取它。
我终于解决了这个问题。我发现的方法是在没有用户的情况下保存表单,但将提交标志设置为 False,然后使用用户参数从模型中调用函数保存。
表单保存方法现在看起来像这样
def save(self, *args, **kwargs):
item = super(ItemForm, self).save(commit=False)
item.save(user=kwargs['user'])
我在使用 Django 表单时在 Django 中获取用户时遇到问题。我的代码看起来像这样。
观点:
@login_required
def something(request):
item = ItemForm(request.POST)
item.save(user=request.user)
形式:
class ItemForm(ModelForm):
class Meta:
model = Item
fields = '__all__'
def save(self, *args, **kwargs):
user = kwargs['user']
super(ItemForm, self).save(user=user)
模特
class Item(models.Model):
field = models.CharField(max_length=100,)
field2 = models.CharField(max_length=100,)
def check_permissions(self, user):
return user.groups.filter(name='group').exists()
def save(self, *args, **kwargs):
if self.check_permissions(kwargs['user']):
super(Item, self).save()
我的问题是当我在 ItemForm 中调用默认保存时出现错误,因为用户参数是意外的。我需要模型中的用户进行权限检查,但我不知道如何获取它。
我终于解决了这个问题。我发现的方法是在没有用户的情况下保存表单,但将提交标志设置为 False,然后使用用户参数从模型中调用函数保存。
表单保存方法现在看起来像这样
def save(self, *args, **kwargs):
item = super(ItemForm, self).save(commit=False)
item.save(user=kwargs['user'])