Tha*_*eem 2 django django-models django-forms django-views
我想request在save()方法中作为参数获取.
models.py
class Profile(models.Model):
uuid = UUIDField(auto=True)
user = models.ForeignKey(User)
name = models.CharField(max_length=128)
dob = models.DateField()
class Meta:
db_table = 'profile'
def save(self,*args,**kwargs):
if not self.pk:
self.user_id = 2 #here i need request.user instead of 2
super(Profile,self).save(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)
forms.py
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
exclude = ['uuid','user']
Run Code Online (Sandbox Code Playgroud)
views.py
def add(request):
profile_form = ProfileForm(request.POST)
profile_form.save()
Run Code Online (Sandbox Code Playgroud)
而不是2我想传递的价值request.user.我该怎么做.如果问题不正确,有人请更正问题.
不要在模型中这样做.在视图中执行.
profile_form = ProfileForm(request.POST)
if profile_form.is_valid():
profile = profile_form.save(commit=False)
profile.user = request.user
profile.save()
Run Code Online (Sandbox Code Playgroud)
一种方法是使用crequest,如下所示:
# model
from crequest.middleware import CrequestMiddleware
class Profile(models.Model):
# Some fields
def save(self, *args, **kwargs):
crequest = CrequestMiddleware.get_request() #its the current request
if crequest.user.pk is 1:
# Do stuff
pass
super(Profile,self).save(*args,**kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4858 次 |
| 最近记录: |