检查重复

时间:2010-10-21 14:16:24

标签: python django django-models django-forms

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

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/')

任何帮助,或指向我正确的方向将非常感激。

谢谢大家!

1 个答案:

答案 0 :(得分:2)

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