u
Қаз. 27, 2020, 7:45 Т.Қ.

Создание черновика как на авито и тд

Всем привет!
Есть задача: при переходе на создание поста мб еще и заполнении чего то... создавать что то вроде черновика поста с id.
В джанго только новичок :(
Может кто сталкивался с такой задачей или хотя бы подскажите куда копать ?

4

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

8
Илья Чичак
  • Қаз. 27, 2020, 8:09 Т.Қ.

почему-бы не создавать объект поста, но, чтобы в нем был флаг, например 'is_draft=True'?

после заполнения, во время сохранения, переключать is_draft в False

а выводить, куда нужно, все, у чего is_draft = False

    u
    • Қаз. 27, 2020, 8:17 Т.Қ.

    по коду я тук тук)) если создание объекта поста без нажатия кнопок (создать черновик), то подходит, вернее оно и есть... но если надо нажимать кнопку - то не то

      Илья Чичак
      • Қаз. 27, 2020, 8:27 Т.Қ.
      • Жауап шешім ретінде белгіленді.

      почему?

        u
        • Қаз. 27, 2020, 8:34 Т.Қ.
        • (өңделген)

        Ну пользователь я думаю не настроен будет жмакать кнопку создать черновик, потом продолжать заполнять...
        А черновик в свою очередь нужен пока только для получения id, который нужен для мультизагружки изображений и привязки их к посту. как то так...

          Илья Чичак
          • Қаз. 28, 2020, 2:48 Т.Қ.

          кнопка "добавить пост" -> создается черновик, открывается форма этого черновика
          пользователь заполняет, отмечает галку "опубликовать" -> пост переводится из черновика и сохраняется, что пользователь написал

            u
            • Қаз. 28, 2020, 4:37 Т.Қ.
            • (өңделген)

            Илья а можно пример кода?
            Пожалуйстааа ^___^

            1. class CreatePostView(LoginRequiredMixin, CreateView):
            2. model = Post
            3. form_class = PostForm
            4. template_name = 'add.html'
            5. success_url = None
            6.  
            7. def get(self, request, *args, **kwargs):
            8. self.object = None
            9. form_class = self.get_form_class()
            10. form = self.get_form(form_class)
            11.  
            12. #создание черновика при переходе на страницу добавления
            13. if request.user.is_authenticated:
            14. object = Post.objects.create(name='Название не указано', user=self.request.user)
            15. object.save()
            16.  
            17. return self.render_to_response(self.get_context_data(form=form))
            18.  
            19.  
            20. def post(self, request, *args, **kwargs):
            21. form = self.get_form()
            22. if form.is_valid():
            23. return self.form_valid(form)
            24. else:
            25. return self.form_invalid(form)

            При переходе на страницу добавления пост создается, но как открыть форму этого же поста?))

              Илья Чичак
              • Қаз. 29, 2020, 3:34 Т.Қ.

              А черновик в свою очередь нужен пока только для получения id, который нужен для мультизагружки изображений и привязки их к посту. как то так...

              я бы вообще решал это так:

              1. class Post(models.Model):
              2. author = models.ForeignKey(settings.USER_MODEL)
              3. title = models.CharField...
              4. tags = models.ListField...
              5. created_at = models.DatetimeField...
              6. updated_at = models.DatetimeField...
              7.  
              8. summary = models.TextField...
              9. head_img = models.URLField...
              10.  
              11. class PostChunk(models.Model):
              12. post = models.ForeignKey('Post')
              13. text = models.TextField...
              14. image = models.ImageField...
              15. ...

              и сам пост собирать из PostChunk

              тогда можно было бы сделать сложную структуру, типа

              1. текст
              2. картинка
              3. текст
              4. текст
              5. видео
              6. текст
                СЯ
                • Сәуір 11, 2021, 2:14 Т.Қ.

                А как все же активировать черновик?

                  Пікірлер

                  Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                  Кіріңіз немесе Тіркеліңіз