Django设置默认表单值 [英] Django set default form values
本文介绍了Django设置默认表单值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个模型如下
class TankJournal(models.Model):
user = models.ForeignKey (用户)
tank = models.ForeignKey(TankProfile)
ts = models.IntegerField(max_length = 15)
title = models.CharField(max_length = 50)
body = models对于该模型,我有一个模型格式如下:
类JournalForm(ModelForm):
tank = forms.IntegerField(widget = forms.HiddenInput())
class Meta :
model = TankJournal
exclude =('user','ts')
我想知道如何设置该坦克隐藏字段的默认值..这是我的功能,以显示/保存窗体到目前为止
def addJournal(request,id = 0):
如果没有request.user.is_authenticated():
返回HttpResponseRedirect('/')
#
#检查他们是否拥有坦克
#
django.contrib.auth.models import User
user = User.objects.get(pk = request.session ['id'])
如果request.method =='POST':
form = JournalForm(request.POST)
如果form.is_valid():
obj = form.save(commit = False)
#
#设置用户和ts
#
从时间导入时间
obj.ts = int(time())
obj.user = user
obj.tank = TankProfile.objects.get(pk = form.cleaned_data ['tank_id'])
#
#保存测试
#
obj.save ()
else:
form = JournalForm()
try:
tank = TankProfile.objects.get(user = user,id = id )
除了TankProfile.DoesNotExist:
return HttpResponseRedirect('/ error /')
form.tank = id
return render_to_response('ajax / tank_addJournal.h tml',{'form':form},context_instance = RequestContext(request))
谢谢! / p>
解决方案
您可以使用这里
调用form构造函数时,有两个选项可以填充值: / p>
form = JournalForm(initial = {'tank':123})
pre>
或在表单定义中设置值:
tank = forms.IntegerField(widget = forms.HiddenInput(),initial = 123)
I have a Model as follows
class TankJournal(models.Model): user = models.ForeignKey(User) tank = models.ForeignKey(TankProfile) ts = models.IntegerField(max_length=15) title = models.CharField(max_length=50) body = models.TextField()
I have a modelform as follows for that model
class JournalForm(ModelForm): tank = forms.IntegerField(widget=forms.HiddenInput()) class Meta: model = TankJournal exclude = ('user','ts')
I want to know how to set the default value for that tank hidden field.. Here is my function to show/save the form so far
def addJournal(request, id=0): if not request.user.is_authenticated(): return HttpResponseRedirect('/') # # checking if they own the tank # from django.contrib.auth.models import User user = User.objects.get(pk=request.session['id']) if request.method == 'POST': form = JournalForm(request.POST) if form.is_valid(): obj = form.save(commit=False) # # setting the user and ts # from time import time obj.ts = int(time()) obj.user = user obj.tank = TankProfile.objects.get(pk=form.cleaned_data['tank_id']) # # saving the test # obj.save() else: form = JournalForm() try: tank = TankProfile.objects.get(user=user, id=id) except TankProfile.DoesNotExist: return HttpResponseRedirect('/error/') form.tank = id return render_to_response('ajax/tank_addJournal.html', {'form': form}, context_instance=RequestContext(request))
thanks!
解决方案You can use initial which is explained here
You have two options either populate the value when calling form constructor:
form = JournalForm(initial={'tank': 123})
or set the value in the form definition:
tank = forms.IntegerField(widget=forms.HiddenInput(), initial=123)
这篇关于Django设置默认表单值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文