I am trying to resolve a bug in the API from a code i inherited. I am new to Django and tastypie so i don't know how to resolved this. I have imported my model but i do not know why i am getting DoesNotExist exception. In the save function default_drawing is set to true. I think this prevents the user from manual setting it to true
from erma_drawing import models as erma_drawing_models
def hydrate(self, bundle):
'''
Hydrate things
'''
try:
bundle.obj.profile = erma_drawing_models.DrawingProfile.objects.get(default_drawing=True)
except DrawingProfile.DoesNotExist:
logger.error("Drawing Profile does not exist")
return super().hydrate(bundle)
Model.py
class DrawingProfile(models.Model):
name = models.CharField(
max_length=32, null=False, blank=False, unique=True)
privilege = models.ForeignKey(
'erma_authorization.Privilege',
on_delete=models.PROTECT,
null=True,
blank=True,
help_text='The privilege required to' +
' create new drawings that use this profile')
default_drawing = models.BooleanField(
default=False, null=False, blank=False)
def __init__(self, *args, **kwargs):
super(DrawingProfile, self).__init__(*args, **kwargs)
def save(self, *args, **kwargs):
if kwargs.pop('data_load', False):
return super().save(*args, **kwargs)
default_drawing = None
existing_record = None
if not self._state.adding:
existing_record = DrawingProfile.objects.get(pk=self.pk)
force = kwargs.pop('force', False)
# Remove the ability to change the default without the force argument
#this prevents users from changing the default, without setting a new record as default.
if not force and existing_record.default_drawing:
self.default_drawing = True
if self.default_drawing and not existing_record.default_drawing:
default_drawing = DrawingProfile.objects.get(
default_drawing=True)
# This should never happen, but we'll make sure anyways...
if default_drawing.pk != self.pk:
default_drawing.default_drawing = False
super(DrawingProfile, self).save(*args, **kwargs)
default_drawing.save(force=True)
else:
super(DrawingProfile, self).save(*args, **kwargs)
def delete(self, *args, **kwargs):
# Never delete the default drawing object.
if self.default_drawing:
raise Exception('Cannot delete the default drawing')
default_drawing = DrawingProfile.objects.get(default_drawing=True)
# Update any existing drawings that use this profile to use the
# default drawing profile instead
drawings = self.drawing_set.all()
if len(drawings):
for record in drawings:
record.profile = default_drawing
record.save(fast=True)
DrawingProfile.objects.get(pk=self.pk).delete()
else:
return super(DrawingProfile, self).delete(*args, **kwargs)
class Meta:
db_table = 'drawing_profile'
ordering = ['id']
This is set default set to
Falsein your model. Do you know of any models that have it set to True at the moment? You're gettingDoesNotExistbecause you don't have anyDrawingProfilemodels withdefault_drawingfield set toTrue.