2010-10-21 100 views
1

我有一个小问题。我试图检查状态的值是否已经存在,并确保我不创建它的另一个实例,但我遇到了一些麻烦。防爆。如果项目状态曾经是“Quote”,我不希望能够再次显示状态“Quote”。现在,我检查以确定用户是否选择编辑,然后单击提交,状态不会重复。但是,如果用户选择了另一个状态,如“已完成”,则无法阻止他们再次返回并再次选择“报价”。检查重复项目

models.py

class Status(models.Model): 
    project = models.ForeignKey(Project, related_name='status') 
    value = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name='Status') 
    date_created= models.DateTimeField(auto_now=True) 

class Project(models.Model): 
    ... 

views.py

if form.is_valid():  
     project = form.save(commit=False) 
     project.created_by = request.user 
     project.save() 
     old_status = project.current_status() 
     if not old_status or old_status.value != form.cleaned_data.get('status', None): 
      #add status instance 
      project.status.create(
        value = form.cleaned_data.get('status', None) 
      )  

     return HttpResponseRedirect('/project/') 

任何帮助,或者指着我在正确的方向,将不胜感激。

谢谢大家!

回答

2
value = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name='Status', unique=True) 
+0

太棒了!那是我错过的小事。还有一个问题,我该如何处理这个错误?现在我只是得到Django的错误页面?再次感谢...我仍然在学习 – TheLifeOfSteve 2010-10-21 14:25:10

+0

使用尝试/除非您尝试“保存”。 – user470379 2010-10-21 14:27:45

+0

非常感谢! – TheLifeOfSteve 2010-10-21 14:32:38