Запись в блоге с изображением Django3 - PullRequest
0 голосов
/ 07 мая 2020

Привет, я пытаюсь добавить немного функциональности в свое приложение для сообщений в блоге, я хотел бы вставить изображение в контент сообщения, поэтому я решил, что это waw, который я создал новую модель только для изображений и установил ее как OneToOne с моим сообщением модель, мне интересно, есть ли способ установить это изображение в поле содержимого в модели сообщения

models.py

class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)

def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('post-detail', kwargs={'pk': self.pk})

class PostImage(models.Model):
    post = models.OneToOneField(Post, on_delete=models.CASCADE)
    image = models.ImageField(default=None, upload_to='post_pics', blank=True)

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

    img = Image.open(self.image.path)

    if img.height > 500 or img.width > 500:
        output_size = (500, 500)
        img.thumbnail(output_size)
        img.save(self.image.path)

vievs.py

def home(request):
context = {
    'posts': Post.objects.all(),
    'user_posts': "active",
}

return render(request, 'blog/home.html', context)


class PostListView(ListView):
    model = Post
    template_name = 'blog/home.html'
    context_object_name = 'posts'
    ordering = ['-date_posted']
    paginate_by = 5

post_template. html

{% extends "blog/base.html" %}
{% load static %}
{% load crispy_forms_tags %}
{% block content %}
   <div class="content-section">
       <form method="POST">
           {% csrf_token %}
           <fieldset class="form-group">
               <legend class="border-bottom mb-4">Blog Post</legend>
            {{form|crispy }}
           </fieldset>
           <div class="form-group">
               <button class="btn btn-outline-info" type="submit">Post</button>
           </div>
       </form>
   </div>
{% endblock content %}

Ответы [ 3 ]

0 голосов
/ 09 мая 2020

settings.py

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

in this picture you can see image that i've browsed from my desktop ans it's exactly there where i want it to be saved

0 голосов
/ 12 мая 2020

Ну, я нашел другое решение, я использовал CKEditor, и теперь все работает нормально

0 голосов
/ 08 мая 2020

pip install подушка

и в static / post_pics (см. Img.jpg ... png) это сохранить?

...