如何通过形式传递用户
views.py如何通过形式传递用户
def add_phone(request):
phoneForm = PhoneForm()
user = request.user
phone = Phone_info.objects.get(user=2)
phoneForm = PhoneForm(instance=phone)
phone.user=request.user
if request.method=='POST':
phoneForm = PhoneForm(request.POST,request.user,instance=phone)
user=request.user
if phoneForm.is_valid():
phone=phoneForm.save(commit=False)
phone.user=request.user
phone.save()
return redirect('/member/contact-list/')
models.py
class Phone_info(models.Model):
user = models.ForeignKey(User, null=True)
name1 = models.CharField('Name', max_length=100, null=True, blank=True)
forms.py
class PhoneForm(forms.ModelForm):
class Meta:
model = Phone_info
在views.py的form.is_valid()是没有发生,因为用户没有通过形式。通过什么方法我可以通过形式传递用户。我在谷歌搜索相同,没有得到任何idea.Please帮助我这一点。
在初始化的形式,您可能做到这一点:
phoneForm = PhoneForm({'user':request.user.id})
这样你传递谁提出的请求形式向用户。
下面是完整的方法:
def add_phone(request):
user = request.user
phoneForm = PhoneForm({'user':user.id})
if request.method=='POST':
phoneForm = PhoneForm(request.POST)
if phoneForm.is_valid():
phone=phoneForm.save(commit=False)
phone.save()
return redirect('/member/contact-list/')
希望它能帮助。
这是给这个错误int()参数必须是一个字符串或一个数字,而不是'用户' – user2086641 2013-05-06 15:33:27
任何形式验证在forms.py – user2086641 2013-05-06 15:34:55
更新!看看它是否工作:更改为'user.id' – 2013-05-06 15:36:14
周围的一些开关应该解决您的问题
def add_phone(request):
if request.method == 'POST':
phoneForm = PhoneForm(request.POST)
phoneForm.user = request.user #if a phone has a user and a form has a
if phoneForm.is_valid():
phone = phoneForm.save(commit=False)
phone.save()
return redirect('/member/contact-list/')
我重构了很多,因为你有一些代码,是多余的。 我删除了大部分引用request.user
对不起,错过了'phone'-更新了代码, 再试一次。 - 另外,你可以发布你的“表格”吗? – 2013-05-06 15:20:34
为什么'user = 2'在这里:'phone = Phone_info.objects.get(user = 2)'? – 2013-05-06 15:07:19
这很奇怪:这个phone = Phone_info.objects.get(user = 2)'会执行这个sql:'SELECT * FROM Phone_info WHERE user_id = 2'这样就像你用查询“硬连线” = 2。我认为你所要做的是这样的:'phone = Phone_info.objects.get(user = request.user)' – 2013-05-06 15:21:42
这是好的,我没有修改 – user2086641 2013-05-06 15:34:11