C:\Users\Admin\Desktop\MyShop>python manage.py runserver
Performing system checks...
Unhandled exception in thread started by <function check_errors.<locals>.wrapper
at 0x0341E8E8>
Traceback (most recent call last):
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\utils\autoreload.py", line 225, in wrapper
fn(*args, **kwargs)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\management\commands\runserver.py", line 117, in inner_run
self.check(display_num_errors=True)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\management\base.py", line 379, in check
include_deployment_checks=include_deployment_checks,
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\management\base.py", line 366, in _run_checks
return checks.run_checks(**kwargs)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\checks\registry.py", line 71, in run_checks
new_errors = check(app_configs=app_configs)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\checks\urls.py", line 13, in check_url_config
return check_resolver(resolver)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\core\checks\urls.py", line 23, in check_resolver
return check_method()
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\urls\resolvers.py", line 396, in check
for pattern in self.url_patterns:
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\utils\functional.py", line 37, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\urls\resolvers.py", line 533, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\utils\functional.py", line 37, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\urls\resolvers.py", line 526, in urlconf_module
return import_module(self.urlconf_name)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\importlib\_
_init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\Admin\Desktop\MyShop\MyShop\urls.py", line 24, in <module>
path('', include('shop.urls')),
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\urls\conf.py", line 34, in include
urlconf_module = import_module(urlconf_module)
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\importlib\_
_init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "C:\Users\Admin\Desktop\MyShop\shop\urls.py", line 3, in <module>
from . import views
File "C:\Users\Admin\Desktop\MyShop\shop\views.py", line 4, in <module>
from .forms import *
File "C:\Users\Admin\Desktop\MyShop\shop\forms.py", line 18, in <module>
class BuyForm(forms.ModelForm):
File "C:\Users\Admin\AppData\Local\Programs\Python\Python36-32\lib\site-packag
es\django\forms\models.py", line 266, in __new__
raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) (delivery, buyer, item) spec
ified for Item
Usiłuję utworzyć funkcję "kup teraz" w swoim sklepie internetowym https://github.com/Incybro/MyShop i przyznaję, że trochę się pogubiłem. Chciałbym, aby po kliknięciu "kup teraz", użytkownika przekierowało do formularza, gdzie będzie miał wypełnione już jaki przedmiot chce zamówić oraz za jaką cenę, natomiast resztę formularza - dostawę - będzie wypełniać samodzielnie. Wymyśliłem, że zrobię to tak, jak kiedyś robiłem formularz edycji postu:
forms.py
from django import forms
from .models import *
from django.db import models
class ItemForm(forms.ModelForm):
img = models.ImageField(blank=True, null=True,
upload_to='covers/%Y/%m/%D/')
title = forms.CharField(max_length=100)
price = models.FloatField(null=False, blank=False)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
class Meta:
model = Item
fields = (
'title',
'category',
'price',
'img',)
class BuyForm(forms.ModelForm):
model = Order
class Meta:
model = Item
fields = (
'item',
'delivery',
'price',
'buyer',)
models.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
class Category(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
def __str__(self):
return self.title
class Item(models.Model):
seller = models.ForeignKey(User, on_delete=models.CASCADE)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
price = models.FloatField(null=False, blank=False)
img = models.ImageField(blank=True, null=True,
upload_to='covers/%Y/%m/%D/')
published_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.title
class Supplier(models.Model):
title = models.CharField(max_length=100)
def __str__(self):
return self.title
class Delivery(models.Model):
title = models.ForeignKey(Supplier, on_delete=models.CASCADE)
price_of_delivery = models.FloatField(null=False, blank=False)
def __str__(self):
return self.title
class Order(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
delivery = models.ForeignKey(Delivery, on_delete=models.CASCADE)
order_date = models.DateTimeField(default=timezone.now)
buyer = models.ForeignKey(User, on_delete=models.CASCADE)
price = models.FloatField(null=False, blank=False)
def __str__(self):
return self.item
views.py
from django.shortcuts import render, get_object_or_404, redirect
from .models import Item, Category
from django.utils import timezone
from .forms import *
def homepage(request):
items = Item.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return render(request, 'shop/homepage.html', {'items': items})
def item_details(request, pk):
item = get_object_or_404(Item, pk=pk)
return render(request, 'shop/item_details.html', {'item': item})
def item_new(request):
if request.method == "POST":
form = ItemForm(request.POST, request.FILES)
if form.is_valid():
item = form.save(commit=False)
item.buyer = request.user
item.order_date = timezone.now()
item.save()
return redirect('item_details', pk=item.pk)
else:
form = ItemForm()
return render(request, 'shop/item_edit.html', {'form': form})
def buy_item(request, pk):
item = get_object_or_404(Item, pk=pk)
if request.method == "POST":
form = BuyForm(request.POST, instance=item)
if form.is_valid():
item = form.save(commit=False)
item.author = request.user
item.published_date = timezone.now()
item.save()
return redirect('item_details', pk=item.pk)
else:
form = BuyForm(instance=item)
return render(request, 'shop/buy_item.html', {'item': item})
buy_item.html
{% extends 'shop/base.html' %}
{% block content %}
{{ item.pk }}
{{ item.title }}
<h1>New post</h1>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Buy</button>
</form>
{% endblock %}
urls.py
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('', views.homepage, name='homepage'),
path('item/<int:pk>', views.item_details, name='item_details'),
path('item/new', views.item_new, name='item_new'),
path('buy/<int:pk>', views.buy_item, name='buy_item')
]
Niestety wyświetla mi się błąd jak powyżej, czyli Unknown field(s). Jak to poprawić? :/