Ich arbeite an einem Django-Projekt, in dem ich ein Modell (Auftrag) habe, das verschiedene Bestellungen von Kunden enthält. Ich versuche, eines der Bestellfelder (Status) über die ID UpdateView (CancelOrder) zu aktualisieren. Ich habe die UpdateView geschrieben und die URLs.py geändert, aber wenn ich versuche, den Status einer Bestellung per URL zu aktualisieren, erhalte ich den Fehler: Es wurde keine Bestellung gefunden, die mit der Anfrage übereinstimmt, obwohl mehrere Bestellungen gespeichert wurden. Meine Frage ist, warum sieht das UpdateView meine Modelldaten nicht? Habe ich etwas verpasst?Warum sieht mein Django UpdateView meine Modelldaten (speziell die ID/PK) nicht?
Views.py
from django.shortcuts import render, redirect, HttpResponse
from django.core.exceptions import *
from django.views.generic.edit import UpdateView
from menu.models import Item, Order, Customer
from menu.forms import OrderForm, CustForm, UpdateForm
from .serializers import ItemSerializer
from rest_framework import generics
class CancelOrder(UpdateView):
model = Order
field = ('status',)
urls.py
from django.conf.urls import url, patterns, include
from . import views
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = patterns('',
url(r'^$', views.CreateOrder, name='CreateOrder'),
url(r'^vieworder/', views.ViewOrder, name='ViewOrder'),
url(r'^confirmation/', views.ConfirmOrder, name='ConfirmOrder'),
url(r'^api/$', views.ItemList.as_view()),
url(r'^api/(?P<pk>[0-9]+)/$', views.ItemDetail.as_view()),
url(r'^cancel/(?P<pk>[0-9]+)/$', views.CancelOrder.as_view(), name='CancelOrder'),
)
urlpatterns = format_suffix_patterns(urlpatterns)
Modell
class Order(models.Model):
order_date = models.DateField(default=timezone.now)
delivery_date = models.DateField(default=timezone.now)
status = models.CharField(max_length=10, default='open')
ordered_by = models.CharField(max_length=50, null=True)
#user input
name = models.CharField(max_length=50)
email = models.EmailField()
phone = models.CharField(max_length=50)
shipping_info = models.CharField(max_length=50, null=True)
billing_info = models.CharField(max_length=50, null=True)
notes = models.CharField(max_length=150)
total = models.DecimalField(default=0, max_digits=5, decimal_places=2)
surcharge = models.DecimalField(default=0, max_digits=5,decimal_places=2)
def __str__(self):
return self.name
Wie werden diese Ansicht/URL verwendet? Was passierst du in der POST? – AKS
Muss das getan werden? In den Tutorials, die ich sah und las, schienen sie nur die updateview einzurichten, einige Zeilen zu urls.py hinzuzufügen und mit dem Browser zu interagieren (manuell type/cancel/id). Ich bin sicher, es gibt mehr praktische Möglichkeiten, dies zu tun, aber ich bin neu in Django. Was würdest du vorschlagen? – Codarus
Welche Tutorials hast du gelesen? Könnten Sie einen Link angeben? – AKS