Хорошо, давайте сделаем это на ваш взгляд
def category_detail_view(request, slug):
category = get_object_or_404(Category, slug=slug)
# Get the absolute path where the category images should be
category_imgs_path = os.path.abspath(os.path.join(
settings.MEDIA_ROOT,
category.slug))
# Check if the path exists, if not, create it
if not os.path.isdir(category_imgs_path):
os.mkdir(category_imgs_path)
images = os.listdir(category_imgs_path)
context = {
"images": images,
}
return render(request, 'main/category_detail.html', context)
Может быть, лучше создать путь к изображениям категории, когда сама де Категория создается, а не просматривается. Вы не опубликовали код, в котором высоздайте экземпляр de Category, так что я сделал это, по вашему мнению, оно должно работать в любом случае.
Обратите внимание, что я добавил использование ярлыка get_object_or_404 django, чтобы избежать попытки / исключением, документы здесь ->https://docs.djangoproject.com/en/2.2/topics/http/shortcuts/#get-object-or-404
Вам следует рассмотреть возможность фильтрации содержимого, указанного в images
, чтобы убедиться, что в эту переменную входят только изображения, используя os.walk
, glob
или что-то подобное.
Надеется, что это удастсяЕсли нет, не стесняйтесь спрашивать об этом.
Если вы создаете свой экземпляр из интерфейса администратора
Поскольку вы создаете свойЭкземпляр из интерфейса администратора, вы можете создать путь, переопределяющий метод save_model
в вашем ModelAdmin следующим образом:
class CategoryAdmin(ModelAdmin):
(...)
def save_model(self, request, obj, form, change):
category_imgs_path = os.path.abspath(os.path.join(
settings.MEDIA_ROOT,
obj.slug))
# Check if the path exists, if not, create it
if not os.path.isdir(category_imgs_path):
os.mkdir(category_imgs_path)
super().save_model(request, obj, form, change)