2010-10-21 125 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