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+unsubscr...@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.