Как выполнить автоматическое назначение в django

#python #django

Вопрос:

Я работаю над проектом django. там, где есть две таблицы, одна-таблица разработчиков, а другая-таблица Jira. таблица разработчиков и таблица jira связаны с отношением m2m.

вот мой model.py

 class developer(models.Model):  
    Developer_Name = models.CharField(max_length=100, unique=True)
    Role = models.CharField(max_length=500)
    Level = models.CharField(max_length=30)
    Expertise = models.CharField(max_length=200)
    Availability_Hours = models.CharField(max_length=500)

    def __str__(self):
        return self.Developer_Name

class jira(models.Model):  
    Jira_ID = models.CharField(max_length=100, blank=True)
    Jira_Story = models.CharField(max_length=500)
    Short_Description = models.CharField(max_length=500)
    Story_Points = models.CharField(max_length=30)
    Sprint = models.CharField(max_length=200)
    DX4C_Object = models.CharField(max_length=500)
    Developer = models.ManyToManyField(developer)
    Sandbox = models.ForeignKey(environments, on_delete=models.CASCADE, limit_choices_to={'Mainline': None},blank=True, null=True)
  

    def developer_assigned(self):
        return ",".join([str(p) for p in self.Developer.all()])
 

Теперь мой вопрос заключается в том, как установить правило, в котором, если объект Dx4c изменяется, то автоматически один разработчик назначит его на основе правила?
вот мой view.py

 def dependency_management(request):
    jira_story = jira.objects.all()
    return render(request, 'hello/Dependency_Management.html', {'JIRA': jira_story})
 

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

Комментарии:

1. google.github.io/styleguide/pyguide.html

Ответ №1:

Что-то вроде этого:

 


class Developer(models.Model):
    name = models.CharField(max_length=100, unique=True)
    role = models.CharField(max_length=500)
    level = models.CharField(max_length=30)
    expertise = models.CharField(max_length=200)
    availability_hours = models.CharField(max_length=500)

    def __str__(self):
        return self.name


class Jira(models.Model):
    Jira_ID = models.CharField(max_length=100, blank=True)
    story = models.CharField(max_length=500)
    story_points = models.CharField(max_length=30)
    sprint = models.CharField(max_length=200)
    DX4C_Object = models.CharField(max_length=500)
    developers = models.ManyToManyField(developer)
    sandbox = models.ForeignKey(
        environments,
        on_delete=models.CASCADE,
        limit_choices_to={'Mainline': None},
        blank=True, null=True,
    )

    def developer_assigned(self):
        return ",".join(self.developers.values_list('name', flat=True))

    def save(self, *args, **kwargs):
        if pk := getattr(self, 'id', 0):
            old_value = self.__class__.objects.get(id=pk).DX4C_Object
        super().save(*args, **kwargs)
        if pk and self.DX4C_Object != old_value:
            # do sth


 

Комментарии:

1. Привет @WaketZheng, я не понимаю, что делать после, если не создан: как установить правило для назначения разработчика на основе изменения объекта dx4c

2. Получите старую версию перед сохранением, а затем сравните ее после сохранения. Код обновлен.