Объект 'ImageFileDescriptor' не имеет атрибута 'objects' - PullRequest
0 голосов
/ 17 октября 2019

Я пытаюсь перебрать изображения в моих категориях, но получаю 'ImageFileDescriptor' object has no attribute 'objects' ошибку

models.py

class Category(models.Model):
    category_title = models.CharField(max_length=200)
    category_image = models.ImageField(upload_to="category")
    category_description = models.TextField()
    slug = models.SlugField(max_length=200, unique=True, default=1)

    def get_image_path(self, filename):
        gallery_path = os.path.abspath(
            os.path.join(settings.MEDIA_ROOT, self.slug))
        if not os.path.isdir(gallery_path):
            os.mkdir(gallery_path)
        return os.path.join(gallery_path, filename)

    gallery = models.ImageField(upload_to=get_image_path)

    def create_directory(self):
        gallery_path = os.path.abspath(
            os.path.join(settings.MEDIA_ROOT, self.slug))
        if not os.path.isdir(gallery_path):
            os.mkdir(gallery_path)

    def save(self, *args, **kwargs):
        if not self.pk:
            self.create_directory()
        super().save(*args, **kwargs)

    def delete(self, *args, **kwargs):
        shutil.rmtree(os.path.join(settings.MEDIA_ROOT, self.slug))
        # os.rmdir(os.path.join(settings.MEDIA_ROOT, self.slug))
        super().delete(*args, **kwargs)

    class Meta:
        verbose_name_plural = "Categories"

    def __str__(self):
        return self.category_title

views.py

def category_detail_view(request, slug):
    category = get_object_or_404(Category, slug=slug)
    context = {
        "gallery": Category.gallery.objects.all(),
    }
    return render(request, 'main/category_detail.html', context)

category_detail.html

{% for image in gallery %}
  <div class="col-md-4">
      <a href="{{ image.url }}"> <img src="{{ image.url }}" class="img-responsive img-thumbnail" width="304" height="236"/>
      </a>
   </div>
{% endfor %}

По некоторым причинам создание галерей в Django было для меня трудным. Кажется, что нет стандартного способа, которым большинство людей делают это. Даже если я заставлю это работать, я не вижу, как можно управлять загруженными изображениями из панели администратора. бывшая загрузка удалить аранжировка и т. д.

Если бы вы могли пролить свет на это для меня, это было бы замечательно

...