Как разрешить пользователя в поле?

Я создаю простое приложение To Do, используя Django 3.2, и я застрял на ошибке, которая выглядит следующим образом: FieldError: Cannot resolve keyword 'user' into field. Choices are: content, created, email, id, name, user1, user1_id

Это models.py:

from django.db import models
from django.db.models.deletion import CASCADE
from django.db.models.fields import CharField
from django.contrib.auth.models import User

# Create your models here.


class User(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)

    user1 = models.ForeignKey(User, on_delete=CASCADE)
    
    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 django import forms

class CreateUserForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['username', 'first_name', 'last_name', 'email', 'password1', 'password2']

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 demo.forms import CreateUserForm

from .models import *
from .models import __str__

# Create your views here.

@login_required(login_url='/login')
def home(request):
    user = request.user
    
    all_items = User.objects.filter(user=user).order_by("created")

    context = {'all_items': all_items}
    return render(request, 'html/home.html', context)

@login_required(login_url='/login')
def add_content(request):
    current_date = timezone.now()
    newItem = User(content=request.POST.get('content'))
    newItem.save()
    return redirect('/')

@login_required(login_url='/login')
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)

home.html

<div>
  <form class="felx" action="add_content/" method="POST">
    {% csrf_token %}
    <input class="form-control me-2" type="text" name="content" placeholder="Hey">
    <button id="add-btn" class="button" type="submit">Add</button>
  </form>

  <table>
    <thead>
      {% for all_item in all_items %}
        <tr>
          <td>{{ all_item.content }}</td>
        </tr>
      {% endfor %}
    </thead>
  </table>
  <a href="{% url 'demo:login' %}">Logout</a>

  {% if request.user.is_authenticated %}
    <p>Hello {{request.user}}</p>
  {% endif %}  
</div>

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

Думаю, ваша проблема здесь

@login_required(login_url='/login')
def home(request):
    user = request.user.pk
    
    all_items = User.objects.filter(user1_id=user).order_by("created") #new

    context = {'all_items': all_items}
    return render(request, 'html/home.html', context)

@login_required(login_url='/login')
def add_content(request):
    current_date = timezone.now()
    newItem = User(content=request.POST.get('content'),user1_id=request.user.pk)
    newItem.save()
    return redirect('/')

Совет:Пожалуйста, попробуйте изменить User в models.py на другое имя, потому что Django по умолчанию имеет модель под названием User.

Вернуться на верх