Проверка на дубликаты - PullRequest
1 голос
/ 21 октября 2010

У меня небольшая проблема.Я пытаюсь проверить, существует ли уже значение статуса, и убедиться, что я не создаю другой его экземпляр, но у меня возникли некоторые проблемы.Ex.Если статус проекта был когда-то «Цитировать», я не хочу иметь возможность сделать статус «Цитировать» снова.Прямо сейчас я проверяю, чтобы убедиться, что пользователь выбирает изменить, а затем нажимает кнопку «Отправить», статус не дублируется.Однако, если пользователь выбрал другой статус, например, «завершен», ничто не мешает ему вернуться и снова выбрать «цитата».

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 Ответ

2 голосов
/ 21 октября 2010
value = models.CharField(max_length=20, choices=STATUS_CHOICES, verbose_name='Status', unique=True)
...