#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:
Что-то вроде этого:
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. Получите старую версию перед сохранением, а затем сравните ее после сохранения. Код обновлен.