У меня есть Django Model следующим образом:
class IPGroup(models.Model):
name = models.CharField(max_length=50, unique=True)
junos_space_id = models.CharField(max_length=50)
class Jira(models.Model):
jira_id = models.CharField(max_length=50, unique=True)
ip_groups = models.ForeignKey(IPGroup, null=True, on_delete=models.SET_NULL)
Теперь у меня есть атомарная транзакция ORM следующим образом:
try:
with transaction.atomic():
IPGroup.objects.filter(id=2).update(junos_space_id=3)
Jira.objects.filter(jira_id=2)).update(ip_groups_id=2)
except Exception:
response = Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR,
data={'status': 'Database error encountered'})
Это работает хорошо, когда все в порядке. Однако когдавозникает ошибка, как в случае неправильного идентификатора, filter просто дает пустой набор запросов, и он никогда не попадает в исключение.
Я пытался переписать его с get вместо фильтра следующим образом:
try:
with transaction.atomic():
IPGroup.objects.get(id=2).update(junos_space_id=3)
Jira.objects.get(jira_id=2)).update(ip_groups_id=2)
except Exception:
response = Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR,
data={'status': 'Database error encountered'})
Но это дает мне следующую ошибку атрибута:
AttributeError: объект 'IPGroup' не имеет атрибута'update'
Каков наилучший способ сделать это чистым способом?