是否可以在表单类中获取request.user数据?我想清理一个电子邮件地址,以确保它是唯一的,但如果它是当前用户的电子邮件地址,那么它应该通过.
这是我目前拥有的创建新用户非常有用的东西,但如果我想编辑用户,我会遇到他们的电子邮件未经验证的问题,因为它已经出现了.如果我可以使用request.user.email检查它是他们的电子邮件,那么我将能够解决我的问题,但我不知道该怎么做.
class editUserForm(forms.Form):
email_address = forms.EmailField(widget=forms.TextInput(attrs={'class':'required'}))
def clean_email_address(self):
this_email = self.cleaned_data['email_address']
test = UserProfiles.objects.filter(email = this_email)
if len(test)>0:
raise ValidationError("A user with that email already exists.")
else:
return this_email
Run Code Online (Sandbox Code Playgroud) 它是否正确?
class Customer(models.Model):
account = models.ForeignKey(Account)
class Order(models.Model):
account = models.ForeignKey(Account)
customer = models.ForeignKey(Customer, limit_choices_to={'account': 'self.account'})
Run Code Online (Sandbox Code Playgroud)
我正在努力确保订单表单只显示与订单属于同一帐户的客户选择.
如果我忽略了一些明显不好的设计谬误,请告诉我.
我最关心的是:
limit_choices_to={'account': 'self.account'}
Run Code Online (Sandbox Code Playgroud) 我的问题与此问题非常相似:如何在表单的clean()方法中访问请求对象或任何其他变量?
除此之外,我对admin表单也有同样的问题.因此,我无法看到自己初始化表单的方法,因此 - 将请求传递给它.
先谢谢.
我正在尝试做的事情:
我正在尝试访问 django 模型中的请求对象,以便我可以使用request.user.
我尝试过的:
我在这个网站上发现了一个黑客。但是评论中有人指出在生产时不要这样做。
我也尝试__init__像这篇文章中提到的那样覆盖模型的方法。但我得到了一个AttributeError: 'RelatedManager' object has no attribute 'request'
模型.py:
class TestManager(models.Manager):
def user_test(self):
return self.filter(user=self.request.user, viewed=False)
class Test(models.Model):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(Test, self).__init__(*args, **kwargs)
user = models.ForeignKey(User, related_name='test')
viewed = models.BooleanField(default=False)
objects = TestManager()
Run Code Online (Sandbox Code Playgroud) 我知道,如果我位于请求功能内,则可以使用ipware.ip get_ip(request)或其他方法来获取用户的IP地址,但是我使用的是,(ListView, FormView)因此我不确定如何将IP添加到像我通常那样使用以下形式:
instance = form.save(commit=False)
instance.ip = get_ip(request)
instance.save()
Run Code Online (Sandbox Code Playgroud) 您好,我有一个会话变量城市,如何在表单类中访问它。
像这样的东西
类 LonginForm(forms.Form):
current_city=request.city
Run Code Online (Sandbox Code Playgroud) django ×6
python ×3
django-forms ×2
django-admin ×1
foreign-keys ×1
forms ×1
ip ×1
listview ×1
metaclass ×1
oop ×1