Django - загрузка изображений в неправильную папку

Делаю сайт типа блога и не могу сделать так, чтобы на главной странице отображались изображения статей... Изображения должны загружаться в media/profile_pics, но он просто создает папку profile_pics в папке app и загружает изображения туда.

my models.py :

class Post(models.Model):
    title = models.CharField(max_length=255)
    title_tag = models.CharField(max_length=255, default="YNTN")
    #author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = RichTextField(blank=True, null=True)
    image = models.ImageField(upload_to="profile_pics", blank=True, null=True)
    #body = models.TextField()
    post_date = models.DateField(auto_now_add=True)
    likes = models.ManyToManyField(User, related_name="blog_posts")

    def total_likes(self):
        return self.likes.count()

    def __str__(self):
        return (self.title + " | " + str(self.author))

    def get_absolute_url(self):
        return reverse("home")

my views.py:

class AddPostView(CreateView):
    model = Post
    form_class = PostForm
    template_name = 'add_post.html'

my forms.py

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ('title', 'title_tag', 'body', 'image')
        widgets = {
            'title': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Title of the Blog'}),
            'title_tag': forms.TextInput(attrs={'class':'form-control', 'placeholder':'Copy the title with no space and a hyphen in between'}),
            'body': forms.Textarea(attrs={'class':'form-control', 'placeholder':'Content of the Blog'}),
        }

my home.html

<div class="row">
    {% for post in object_list %}
    <div class="col-lg-4 my-4">
        <div class="card shadow" style="width: 20rem; height: 33rem;">
            <img src="/media/{{post.image}}" class="card-img-top" alt="..." height="250px">
            <div class="card-body">
              <h5 class="card-title">{{post.title}} <br><small>by {{ post.author.first_name }} {{ post.author.last_name }}</small></h5>
              <p class="card-text">{{post.body|slice:":100"|safe}}</p>
              <a href={% url 'article-details' post.pk %} class="btn btn-primary">Read More {% if user.is_superuser %}<a href="delete_blog_post/{{post.slug}}/" class="btn btn-danger mx-4">Delete Blog</a>{% endif %}</a>
            </div>
          </div>
    </div>
    {% endfor %}
</div>
```

my settings.py:

MEDIA_ROOT = os.path.join(BASE_DIR, 'yntn/yntnapp/media')
MEDIA_URL = '/media/'

Изображения должны быть в media/profile_pics, но вместо этого он создает папку profile_pics в папке моего проекта и загружает изображения туда...

Я думаю, что вы должны установить MEDIA_ROOT следующим образом.

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Потому что именно туда вы указали модель для загрузки по адресу upload_to="profile_pics". Вместо этого вам нужно указать на yntn/yntnapp/media/profile_pics.

Вы можете сделать это, импортировав переменную MEDIA_ROOT из настроек и объединив ее с переменной profile_pics.

from django.conf import settings

class Post(models.Model):
    ...
    image = models.ImageField(upload_to=f"{settings.MEDIA_ROOT}/profile_pics", blank=True, null=True)
    ...
Вернуться на верх