2017-11-17 1 views
0

나는 아주 간단한 일을 시도하고있다. 나는 고객들과 데이터베이스를 가지고있다. 이제 고객 중 한 명을 선택하고 정보를 편집하는 사이트를 구축하고 있습니다. 관리자 페이지에서 '보기'중 하나를 선택하고 값을 변경할 수있는 것과 똑같습니다.Django : 관리자 사이트에서와 같이 데이터 세트로 편집; 오류

불행히도 나는 어딘가에서 실수를 저지르고 있습니다. 여기

내 코드 :

urls.py

from django.conf.urls import url 
from django.contrib import admin 

from Customer import views 

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
    url(r'^customerDetails/(?P<pk>\d+)/$', views.customer_details, name='customer_details'), 
    url(r'^customerDetails/(?P<pk>\d+)/edit/$', views.edit_customer, name='edit_customer'), 
    url(r'^admin/', admin.site.urls), 
] 

views.py

def home(request): 
    customers = Customer.objects.all() 
    return render(request, 'home.html', {'customers': customers}) 

def customer_details(request, pk): 
    customerDetails = get_object_or_404(Customer, pk=pk) 
    return render(request, 'customerDetails.html', {'customerDetails': customerDetails}) 

def edit_customer(request, pk): 
    user = User.objects.first() 
    customerDataSet = get_object_or_404(Customer, pk=pk) 
    if request.method == 'POST': 
     form = EditCustomerForm(request.POST, instance=customerDataSet) 
     if form.is_valid(): 
      form.save() 
      return redirect('customer_details', pk=customerDataSet.pk) 
    else: 
     form = EditCustomerForm(instance=customerDataSet) 

    return render(request, 'edit_customer.html', {'customerDataSet': customerDataSet, 'form': form}) 

modely.py

class Customer(models.Model): 
    someId = models.IntegerField() 
    customerName = models.CharField(max_length=50) 
#with some more fields 
class customerDetails(models.Model): 
    customerName = models.CharField(max_length=50) 
#with some more fields 

formy.py

from django import forms 
from .models import Customer 

class EditCustomerForm(forms.ModelForm): 

    class Meta: 
     model = Customer 
     fields = ['someId', 'customerName'] 

나는 오류가있어

{% extends 'base.html' %} 

{% block title %}Edit a customer{% endblock %} 

{% block breadcrumb %} 
    <li class="breadcrumb-item"><a href="{% url 'home' %}">Customer</a></li> 
    <li class="breadcrumb-item"><a href="{% url 'customer_details' customerDetails.pk %}">{{ customerDetails.customerName }}</a></li> 
    <li class="breadcrumb-item active">Edit customer</li> 
{% endblock %} 

{% block content %} 
<form method="post"> 
    {% csrf_token %} 
    {{form.as_p}} 
    <button type="submit" class="btn btn-success">Post</button> 
    </form> 

{% endblock %} 

edit_customer.html :

Exception Type: NoReverseMatch 
Exception Value: Reverse for 'customer_details' with arguments '('',)' not found. 1 pattern(s) tried: ['customerDetails/(?P<pk>\\d+)/$'] 

이 오류가 메신저 찾기 위해 좀 도와 줄래 내 암호.

미리 감사드립니다.

답변

0

나는 대답을 얻었다. 내 edit_customer.html이 잘못되었습니다.

라인 :

<li class="breadcrumb-item"><a href="{% url 'customer_details' customerDetails.pk %}">{{ customerDetails.customerName }}</a></li> 

대신해야한다 :

<li class="breadcrumb-item">{{ customerDataSet.customerName }}</li> 
+0

네, 맞습니다. 그것은 다른 해결책입니다. 코드를 수정하고 수정하지 않고 오류를 삭제했습니다 :-) – kingbrain

관련 문제