Почему он не показывает никаких данных после того, как я его добавляю?

#python #django

Вопрос:

Работа над простым в использовании приложением с использованием Django 3.2. В данный момент я работаю над отношениями «один к одному», в которых у каждого конкретного пользователя есть свои собственные данные(какие задачи необходимо выполнить в данном случае). Я сделал это, создав поле в models.py user = models.ForeignKey(User, on_delete=CASCADE, null=True) Проблема в том, что когда я добавляю задачу в домашний шаблон, она не отображается.

models.py

 from django.db import models from django.contrib.auth.models import User from django.db.models.deletion import CASCADE  # Create your models here.  class user_active(models.Model):  content = models.CharField(max_length=200, null=True)  created = models.DateTimeField(auto_now_add=True)  name = models.CharField(max_length=200, null=True)  email = models.CharField(max_length=200, null=True)  user = models.ForeignKey(User, on_delete=CASCADE, null=True)   def __str__(self):  return self.content  

forms.py

 from django import forms from django.forms import ModelForm, fields from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User  from .models import user_active  class CreateUserForm(UserCreationForm):  class Meta:  model = User  fields = ['username', 'first_name', 'last_name', 'email', 'password1', 'password2']  

home.html

 lt;divgt;  lt;form class="felx" action="add_content/" method="POST"gt;  {% csrf_token %}  lt;input class="form-control me-2" type="text" name="content" placeholder="Hey"gt;  lt;button id="add-btn" class="button" type="submit"gt;Addlt;/buttongt;  lt;/formgt;   lt;tablegt;  lt;theadgt;  {% for all_item in all_items %}  lt;trgt;  lt;tdgt;{{ all_item.content }}lt;/tdgt;  lt;/trgt;  {% endfor %}  lt;/theadgt;  lt;/tablegt;  lt;a href="{% url 'demo1:login' %}"gt;Logoutlt;/agt;   {% if request.user.is_authenticated %}  lt;pgt;Hello {{request.user}}lt;/pgt;  {% endif %}  lt;/divgt;  

views.py

 from django.shortcuts import render, redirect from django.http.response import HttpResponse from django.utils import timezone from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required  # from demo1.forms import CeateUserForm1  from .models import * from .models import __str__  from .forms import CreateUserForm   def home(request):  user = request.user    all_items = user_active.objects.filter(user=user).order_by("created")    context = {'all_items': all_items}   return render(request, 'html/home.html', context)  def add_content(request):  user = request.user  current_date = timezone.now()  newItem = user_active(content=request.POST.get('content'))  print('New item:', newItem)  newItem.save()  return redirect('/')  def login_user(request):  if request.method == 'POST':  username = request.POST.get('username')  password = request.POST.get('password')   user = authenticate(request, username=username, password=password)   if user is not None:  login(request, user)  return redirect('/')  return render(request, 'html/login.html')  def logoutUser(request):  logout(request)  return redirect('login/')  def register_user(request):  form = CreateUserForm()  if request.method == 'POST':  form = CreateUserForm(request.POST)  if form.is_valid():  user = form.save(commit=False)  user.save()   user = authenticate(request, username=user.username, password=request.POST.get('password1'))   if user is not None:  login(request, user)  return redirect('/')    context = {'form':form}   return render(request, 'html/register.html', context)  

Также, чтобы проверить это, я печатаю новый элемент, чтобы увидеть, добавлены ли в него какие-либо данные, и да, он показывает терминалу новый элемент, но не в шаблоне. Не уверен, почему это ошибка. Буду признателен за любой ответ или предложения Спасибо1

Ответ №1:

В представлении add_content вы не назначаете пользователя объекту user_active при создании нового элемента.

 def add_content(request):  user = request.user  current_date = timezone.now()   #here you need to assign the user  newItem = user_active(user=user, content=request.POST.get('content'))   print('New item:', newItem)  newItem.save()  return redirect('/')  

Комментарии:

1. Как я могу его назначить? @ягус

2. @Zani123, Как я уже писал?