In my admin I have a section for editing products and for each product has a one to many of sample images. I wanted to display the image for convience in my StackedInline for the sample images. However after setting everything up to display the sample image, I am still getting an internal error when it tries to render the view. Can someone look at it and give me an idea of whats going on?
-- Here is my code so far:
admin.py:
class SampleInline(admin.StackedInline):
model = SampleImage
extra = 3
verbose_name = "Sample Page"
verbose_name_plural = "Sample Pages"
fieldsets = (
(None, {
'fields' : ("sample_type", "sample_image", "order", "display_sample_image",)
}),
)
readonly_fields = ("display_sample_image",)
def display_sample_image(self, obj):
return obj.display_sample_image()
return "testing"
models.py
class SampleImage(models.Model):
sheet = models.ForeignKey(Sheet, related_name = "samples", on_delete=models.CASCADE, null=True)
sample_type = models.IntegerField(choices=IMAGE_CHOICES, default=IMAGE_CHOICES[-1][0])
sample_image = models.ImageField(upload_to=sample_image_upload_to)
order = models.IntegerField(blank=True, null=True)
def display_sample_image(self):
width = 200
height = width * self.sample_image.height / self.sample_image.width
return format_html('<img src="' + self.sample_image.url + '" width=' + str(width) + ' height=' + str(height) + ">")
display_sample_image.short_description = "Image"
class Meta:
ordering = ('order',)
I'm getting two errors, the first is:
Template error:
In template E:\Python\Python37\lib\site-packages\django\contrib\admin\templates\admin\includes\fieldset.html, error at line 17
That causes a second error:
Exception Type: FileNotFoundError at /admin/browse/sheet/3868/change/
Exception Value: [Errno 2] No such file or directory: '[....].png'
I'm guessing its still not finding the display_sample_image field? Any thoughts on what I might be missing? The raw detail is below. I appreciate any help anybody can provide.
Thanks again,
Joel
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/browse/sheet/3868/change/
Django Version: 2.2.7
Python Version: 3.7.0
Installed Applications:
['browse.apps.BrowseConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template E:\Python\Python37\lib\site-packages\django\contrib\admin\templates\admin\includes\fieldset.html, error at line 17
2
7 : <div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% if not line.has_visible_field %} hidden{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
8 : {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
9 : {% for field in line %}
10 : <div{% if not line.fields|length_is:'1' %} class="fieldBox{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}{% if field.field.is_hidden %} hidden{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
11 : {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
12 : {% if field.is_checkbox %}
13 : {{ field.field }}{{ field.label_tag }}
14 : {% else %}
15 : {{ field.label_tag }}
16 : {% if field.is_readonly %}
17 : <div class="readonly"> {{ field.contents }} </div>
18 : {% else %}
19 : {{ field.field }}
20 : {% endif %}
21 : {% endif %}
22 : {% if field.field.help_text %}
23 : <div class="help">{{ field.field.help_text|safe }}</div>
24 : {% endif %}
25 : </div>
26 : {% endfor %}
27 : </div>
Traceback:
File "E:\Python\Python37\lib\site-packages\django\db\models\options.py" in get_field
565. return self.fields_map[field_name]
During handling of the above exception ('display_sample_image'), another exception occurred:
File "E:\Python\Python37\lib\site-packages\django\contrib\admin\utils.py" in lookup_field
262. f = _get_non_gfk_field(opts, name)
File "E:\Python\Python37\lib\site-packages\django\contrib\admin\utils.py" in _get_non_gfk_field
293. field = opts.get_field(name)
File "E:\Python\Python37\lib\site-packages\django\db\models\options.py" in get_field
567. raise FieldDoesNotExist("%s has no field named '%s'" % (self.object_name, field_name))
During handling of the above exception (SampleImage has no field named 'display_sample_image'), another exception occurred:
File "E:\Python\Python37\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "E:\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
145. response = self.process_exception_by_middleware(e, request)
File "E:\Python\Python37\lib\site-packages\django\core\handlers\base.py" in _get_response
143. response = response.render()
File "E:\Python\Python37\lib\site-packages\django\template\response.py" in render
106. self.content = self.rendered_content
File "E:\Python\Python37\lib\site-packages\django\template\response.py" in rendered_content
83. content = template.render(context, self._request)
File "E:\Python\Python37\lib\site-packages\django\template\backends\django.py" in render
61. return self.template.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
171. return self._render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
150. return compiled_parent._render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
150. return compiled_parent._render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
62. result = block.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
188. return template.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
173. return self._render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\loader_tags.py" in render
188. return template.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
173. return self._render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
209. nodelist.append(node.render_annotated(context))
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
309. return nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\defaulttags.py" in render
309. return nodelist.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in render
987. output = self.filter_expression.resolve(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in resolve
671. obj = self.var.resolve(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in resolve
796. value = self._resolve_lookup(context)
File "E:\Python\Python37\lib\site-packages\django\template\base.py" in _resolve_lookup
858. current = current()
File "E:\Python\Python37\lib\site-packages\django\contrib\admin\helpers.py" in contents
196. f, attr, value = lookup_field(field, obj, model_admin)
File "E:\Python\Python37\lib\site-packages\django\contrib\admin\utils.py" in lookup_field
271. value = attr(obj)
File "E:\Dropbox\Projects\popmusicplus\browse\admin.py" in display_sample_image
31. return obj.display_sample_image()
File "E:\Dropbox\Projects\popmusicplus\browse\models.py" in display_sample_image
138. height = width * self.sample_image.height / self.sample_image.width
File "E:\Python\Python37\lib\site-packages\django\core\files\images.py" in height
23. return self._get_image_dimensions()[1]
File "E:\Python\Python37\lib\site-packages\django\core\files\images.py" in _get_image_dimensions
28. self.open()
File "E:\Python\Python37\lib\site-packages\django\db\models\fields\files.py" in open
74. self.file = self.storage.open(self.name, mode)
File "E:\Python\Python37\lib\site-packages\django\core\files\storage.py" in open
36. return self._open(name, mode)
File "E:\Python\Python37\lib\site-packages\django\core\files\storage.py" in _open
224. return File(open(self.path(name), mode))
Exception Type: FileNotFoundError at /admin/browse/sheet/3868/change/
Exception Value: [Errno 2] No such file or directory: 'E:\\Dropbox\\Projects\\popmusicplus\\images\\samples\\3868-awake-celeste-easy-piano_cover.png'
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c6470e95-b817-4c68-a260-0a4f001af54c%40googlegroups.com.
No comments:
Post a Comment