首页 > 解决方案 > 如何在 django 中进行自动分配

问题描述

我正在做一个 django 项目。其中有两个表,一个是开发人员表,另一个是 Jira 表。developer table 和 jira table 以 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 对象正在更改,那么一个开发人员将根据该规则自动分配?这是我的观点.py

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

我想让这种动态。我的意思是,如果每次我添加任何新的 DX4C 对象,则无需更改特定开发人员将根据规则分配的代码

标签: pythondjango

解决方案


像这样的东西:




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



推荐阅读