Django设置默认表单值 [英] Django set default form values

查看:209
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆