如何解决为什么我在Django中遇到DrawingProfile.DoesNotExist异常?
我正在尝试从继承的代码中解决API中的错误。我是Django和Deliciouspie的新手,所以我不知道该如何解决。我已经导入了我的模型,但是我不知道为什么会出现DidsNotExist异常。 在保存功能中,default_drawing设置为true。我认为这会阻止用户手动将其设置为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,blank=False)
def __init__(self,*args,**kwargs):
super(DrawingProfile,self).__init__(*args,**kwargs)
def save(self,**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,**kwargs)
def delete(self,**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']
解决方法
try/catch
此参数在您的模型中默认设置为try {
File obraz = new File("C:\\Users\\ender\\Pictures\\logo.jpg");
Image image = ImageIO.read(obraz);
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.drawImage(image);
}
。您是否知道目前有任何模型将其设置为True?之所以得到default_drawing = models.BooleanField(default=False,null=False,blank=False)
,是因为您没有任何False
字段设置为DoesNotExist
的{{1}}模型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。