我试图建立一个项目列表,当我建立一个项目时,它有一个项目编号(例如10-1000)。我希望能够添加一个新项目并将其附加1到项目编号中(例如,下一个项目编号将为10-1001)。我在确定第一步时遇到了一些麻烦。递增1 1
这里是我的models.py
class Project(models.Model):
client = models.ForeignKey(Clients, related_name='projects')
created_by = models.ForeignKey(User, related_name='created_by')
#general information
proj_name = models.CharField(max_length=255, verbose_name='Project Name')
quote = models.CharField(max_length=10, verbose_name='Quote #', unique=True)
desc = models.TextField(verbose_name='Description')
starts_on = models.DateField(verbose_name='Start Date')
completed_on = models.DateField(verbose_name='Finished On')
def __unicode__(self):
return u'%s' % (self.proj_name)
#get the current status of the projectget_value_display
def current_status(self):
try:
return self.status.all().order_by('-id')[:1][0]
except:
return None
我views.py显示添加
@login_required
def addProject(request):
if request.method == 'POST':
form = AddSingleProjectForm(request.POST)
if form.is_valid():
project = form.save(commit=False)
project.created_by = request.user
today = datetime.date.today()
project.quote = "%s-%s" % (str(today.year)[2:4], project.quote)
project.save()
project.status.create(
value = form.cleaned_data.get('status', None)
)
return HttpResponseRedirect('/project/')
else:
form = AddSingleProjectForm()
return render_to_response('project/addProject.html', {
'form': form, 'user':request.user}, context_instance=RequestContext(request))
和我forms.py
class AddSingleProjectForm(ModelForm):
status = forms.ChoiceField(choices=STATUS_CHOICES)
def __init__(self, *args, **kwargs):
super(AddSingleProjectForm, self).__init__(*args, **kwargs)
self.fields['status'].initial = self.instance.current_status()
class Meta:
model = Project
exclude = ('pre_quote', 'created_by')
def save(self, force_insert=False, force_update=False, commit=True):
f = super(AddSingleProjectForm, self).save(commit=False)
if commit:
f.save()
print "form save method was called with commit TRUE"
return f
任何建议,将不胜感激。
谢谢大家!
我认为“报价”字段是你想要这些数字去的地方?您在文中将其一致地称为“项目编号”。其次,表单的Meta.exclude中的'pre_'前缀是什么意思? – 2010-11-03 18:58:28
是的报价字段将是项目编号。我很抱歉,那是我忘记删除的一段旧代码。 – TheLifeOfSteve 2010-11-03 19:17:00