Python “关系”处的编程错误;产品“U产品”;不存在第1行:…总票数&引用;产品“产品”&引用;猎人“身份证”;从「;产品_

Python “关系”处的编程错误;产品“U产品”;不存在第1行:…总票数&引用;产品“产品”&引用;猎人“身份证”;从「;产品_,python,django,Python,Django,错误: 编程错误在/ 关系“产品与产品”不存在 第1行:…从“产品”中选出“产品”“产品”“猎人id” 我的观点 from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from .models import Product from django.utils import timezone def hom

错误:

编程错误在/ 关系“产品与产品”不存在 第1行:…从“产品”中选出“产品”“产品”“猎人id”

我的观点

from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import login_required
from .models import Product
from django.utils import timezone

def home(request):
    products = Product.objects
    return render(request, 'products/home.html',{'products':products})

@login_required(login_url="/accounts/login")
def create(request):
    if request.method == 'POST':
        if request.POST['title'] and request.POST['body'] and request.POST['url'] and request.FILES['icon'] and request.FILES['image']:
            product = Product()
            product.title = request.POST['title']
            product.body = request.POST['body']
            if request.POST['url'].startswith('http://') or request.POST['url'].startswith('https://'):
                product.url = request.POST['url']
            else:
                product.url = 'http://' + request.POST['url']
            product.icon = request.FILES['icon']
            product.image = request.FILES['image']
            product.pub_date = timezone.datetime.now()
            product.hunter = request.user
            product.save()
            return redirect('/products/' + str(product.id))
        else:
            return render(request, 'products/create.html',{'error':'All fields are required.'})
    else:
        return render(request, 'products/create.html')

def detail(request, product_id):
    product = get_object_or_404(Product, pk=product_id)
    return render(request, 'products/detail.html',{'product':product})

@login_required(login_url="/accounts/login")
def upvote(request, product_id):
    if request.method == 'POST':
        product = get_object_or_404(Product, pk=product_id)
        product.votes_total += 1
        product.save()
        return redirect('/products/' + str(product.id))
My models.py:

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

class Product(models.Model):
    title = models.CharField(max_length=255)
    pub_date = models.DateTimeField()
    body = models.TextField()
    url = models.TextField()
    image = models.ImageField(upload_to='images/')
    icon = models.ImageField(upload_to='images/')
    votes_total = models.IntegerField(default=1)
    hunter = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    def summary(self):
        return self.body[:100]

    def pub_date_pretty(self):
        return self.pub_date.strftime('%b %e %Y')
URL.py:

from django.urls import path, include
from . import views

urlpatterns = [
    path('create', views.create, name='create'),
    path('<int:product_id>', views.detail, name='detail'),
    path('<int:product_id>/upvote', views.upvote, name='upvote'),
    

]

def home
应该是

def home(request):
  products = Product.objects.all()
  ...
而不是

def home(request):
  products = Product.objects
  ...
Product.objects
返回实际类,而不是所有对象。 您需要使用
Product.objects.all()
来获取实际对象


django文档做了很好的解释。

产品上没有
hunter\u id
字段。如果您想要对象,只需使用
hunter
,如果您想要id,请使用双下划线
hunter\u id
,它将进入
User
对象并抓取它。先生,我在哪里编辑它?我在代码中找不到称为hunter\u id的东西
def home(request):
  products = Product.objects
  ...