Django: удалить или очистить содержимое строки в UpdateView - PullRequest
0 голосов
/ 21 октября 2019

Я ищу, чтобы удалить или очистить определенную строку в моей таблице / модели в моем UpdateView. У меня есть команда и сотрудники в команде. Я сделал обновленное представление, что, когда "да" нажата, команда становится заархивированной. При этом я хочу дополнительно удалить или очистить номера сотрудников. Как бы я подошел к этому?

Я знаю, что это может быть странно, но идея состоит в том, что номера сотрудников должны быть уничтожены после того, как команда заархивирована, а остальные данные остаются в силе.

Модель команды

class Team(models.Model):
    slug = models.SlugField(max_length=200)
    teamname = models.CharField(max_length=50, help_text="Indtast holdnavn.", null=False, primary_key=True)
    is_active = models.BooleanField(default=True)

Модель сотрудника

class Employee(models.Model):
    id = models.AutoField(primary_key=True)
    slug = models.SlugField(max_length=200)
    emp_num = models.IntegerField(help_text="Indtast medarbejderens MA-nummer. (F.eks 123456)")
    firstname = models.CharField(max_length=30, help_text="Indtast medarbejderens fornavn.")
    lastname = models.CharField(max_length=30, help_text="Indtast medarbejderens efternavn.")
    teamname = models.ForeignKey('Hold', on_delete=models.CASCADE, null=True)

UpdateView

Мой updateView использует команду, так как эту модель я обновляю.

class ArchiveHoldView(UpdateView):
        template_name = 'evalsys/medarbejder/archive_hold.html'
        model = Team
        form_class = ArchiveForm

        def archive_view_team_with_pk(self, slug=None):
            if slug:
                team = Team.objects.get(slug=slug)
            else:
                team = self.team
            args = {'team': team}
            return render(self, 'evalsys/medarbejder/archive_hold.html', args)

        def get_context_data(self, **kwargs):
            context = super(ArchiveHoldView, self).get_context_data(**kwargs)
            context['is_active'] = Team.objects.get(slug=self.kwargs.get('slug'))
            return context

        def get_success_url(self):
            return reverse_lazy("evalsys:home")

Обновление Просмотр формы

class ArchiveForm(forms.ModelForm):
def save(self, *args, **kwargs):
    self.instance.is_active = False
    return super(ArchiveForm, self).save(*args, **kwargs)

is_active = BooleanField(required=False, widget=forms.HiddenInput())

class Meta:
    model = Team
    fields = ['is_active', ]
    labels = {'is_active': 'Is Active'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...