@nikidreiks

Как из модели другого приложения взять данные?

Необходимо из приложения "createpublication" взять данные из модели и внести их в html шаблон приложения "publication".

models.py:
from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title


views.py:

from django.shortcuts import render, redirect
from .forms import PostForm

def create_post(request):
    if request.method == 'POST':
        form = PostForm(request.POST, author=request.user)
        if form.is_valid():
            form.save()
            return redirect('home')
    else:
        form = PostForm(author=request.user)
    return render(request, 'publication/home.html', {'form': form})


forms.py:
from django import forms
from .models import Post

class PostForm(forms.ModelForm):
		content = forms.CharField(widget=forms.Textarea(attrs={'class':'content_toggle app-textarea',
								'placeholder':'Что у вас нового?'}))
		class Meta:
			model = Post
			fields = ['content']

		def __init__(self, *args, **kwargs):
			self.author = kwargs.pop('author', None)
			super().__init__(*args, **kwargs)

		def save(self, commit=True):
			instance = super().save(commit=False)
			instance.author = self.author
			if commit:
				instance.save()
			return instance


в приложении "publication" в html форма не отображается, а в родном приложении "createpublication" отображается.

<form method="POST">
<div class="post_header">
         <div class="newpost_style">
                  {% csrf_token %}
               {{ form.as_p }}
        </div>
</div>
</form>


Из показанного всё относится к приложению "createpublication".
а в приложении "publication" в templates форма не отображается. Вот что нужно сделать, чтобы она отображалась именно в приложении "publication"?
потому что в "publication" своя модель для отображение уже опубликованных постов.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
@chemdev
Если форма отправлена в контекст то она доступна в шаблоне, а если не отправлена - недоступна. По описанию вопроса и выбранным тобой данным для демонстрации сложно предположить, что в каком приложении лежит. В любом случае странно, что создание поста и его чтение лежит в разных приложениях, однако это не может являться препятствием.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы