Необходимо из приложения "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" своя модель для отображение уже опубликованных постов.