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+)/$']
이 오류가 메신저 찾기 위해 좀 도와 줄래 내 암호.
미리 감사드립니다.
이 오류는 사실에 관련이'' . 여기서'customerDetails.pk'를'customerDataSet.pk'로 대체해야합니다. – Borut
네, 맞습니다. 그것은 다른 해결책입니다. 코드를 수정하고 수정하지 않고 오류를 삭제했습니다 :-) – kingbrain