2017-10-08 14 views
1

私はdjango pythonを使用して名刺マネージャを作ろうとしていますが、名刺が追加されていない理由はありません。 "名刺を追加"ボタンを押すと、BusinessCardListViewになりますが、空白になります。私はまた、削除と更新ボタンをビジネスカードリストで動作させる方法を知りたい。モデルにプライマリキーを追加する必要があると思いますが、正しくパスする方法はわかりません。DjangoでCreateviewを修正する方法

ビュー

from django.views import generic 
from django.views.generic.edit import CreateView, UpdateView, DeleteView 
from django.core.urlresolvers import reverse_lazy 
from django.shortcuts import render, redirect 
from django.contrib.auth import authenticate, login 
from django.views.generic import View 
from .models import BusinessInfo 

class BusinessCardListView(generic.ListView): 
    model = BusinessInfo 
    template_name = 'manager/BusinessCardList.html' 
    context_object_name = 'all_business_cards' 

    def get_queryset(self): 
     return BusinessInfo.objects.all() 


class BusinessCardCreate(CreateView): 
    model = BusinessInfo 
    fields = ['card', 'company_name', 'phone_number', 'website', 'representative_name', 'branch_address', 'job_title', 
       'fax_number', 'cell_phone_number', 'email'] 


class BusinessCardUpdate(UpdateView): 
    model = BusinessInfo 
    fields = ['card', 'company_name', 'phone_number', 'website', 'representative_name', 'branch_address', 'job_title', 
       'fax_number', 'cell_phone_number', 'email'] 


class BusinessCardDelete(DeleteView): 
    model = BusinessInfo 
    success_url = reverse_lazy('manager:index') 

追加名刺フォーム

{% extends 'manager/base.html' %} 
{% block title %}Add a New Business Card{% endblock %} 
{% block albums_active %}active{% endblock %} 
{% block body %} 

<div class="container-fluid"> 
    <div class="row"> 
     <div class="col-sm-12 col-md-7"> 
      <div class="panel panel-default"> 
       <div class="panel-body"> 
        <form class="form-horizontal" action="{% url 'manager:index' %}" method="post" enctype="multipart/form-data"> 
         {% csrf_token %} 
         {% include 'manager/form_template.html' %} 
         <div class="form-group"> 
          <div class="col-sm-offset-2 col-sm-10"> 
           <button type="submit" class="btn btn-success">Add Business Card</button> 
          </div> 
         </div> 
        </form> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 
{% endblock %} 

form_template

{% for field in form %} 
    <div class="form-group"> 
     <div class="col-sm-offset-2 col-sm-10"> 
      <span class="text-danger small">{{ field.error }}</span> 
     </div> 
     <label class="control-label col-sm-2">{{ field.label_tag }}</label> 
     <div class="col-sm-10">{{ field }}</div> 
    </div> 
{% endfor %} 

のURL

from django.conf.urls import url 
from . import views 


app_name = 'manager' 
urlpatterns = [ 
    url(r'^$', views.BusinessCardListView.as_view(), name='index'), 
    url(r'business_card/add/$', views.BusinessCardCreate.as_view(), name='business_card-add'), 
    url(r'business_card/(?P<pk>[0-9]+)/edit/$', views.BusinessCardUpdate.as_view(), name='edit'), 
    url(r'business_card/(?P<pk>[0-9]+)/delete/$', views.BusinessCardDelete.as_view(), name='delete'), 
] 
ビジネスカード内部のあなたの タグで

モデル

from django.db import models 
from django.core.urlresolvers import reverse 


# Business Card Info 
class BusinessInfo(models.Model): 
    card = models.FileField(default='Picture') 
    company_name = models.CharField(max_length=100000, primary_key=True) 
    website = models.CharField(max_length=100000) 
    representative_name = models.CharField(max_length=100000) 
    branch_address = models.CharField(max_length=100000) 
    job_title = models.CharField(max_length=10000) 
    email = models.EmailField() 
    phone_number = models.CharField(max_length=100000) 
    fax_number = models.CharField(max_length=100000) 
    cell_phone_number = models.CharField(max_length=100000) 

    def get_absolute_url(self): 
     return reverse('manager:index') 

    def __str__(self): 
     return self.company_name + ':' + self.representative_name 

名刺一覧

{% extends 'manager/Base.html' %} 
{% block body %} 
<style> 
table, th, .Info { 
    border: 1px solid black; 
    border-collapse: collapse; 
    text-align: center; 
} 
</style> 


<table style="width:100%"> 
    <tr> 
     <th>Business Card</th> 
     <th>Company Name</th> 
     <th>Representative Name</th> 
     <th>Job Title</th> 
     <th>Branch Address</th> 
     <th>Website</th> 
     <th>Phone Number</th> 
     <th>Cell Phone Number</th> 
     <th>Email</th> 
     <th>Fax Number</th> 
    </tr> 
    {% for businessinfo in all_business_cards %} 
     <tr> 
      <td class="Info">{{ businessinfo.card }}</td> 
      <td class="Info">{{ businessinfo.company_name }}</td> 
      <td class="Info">{{ businessinfo.representative_name }}</td> 
      <td class="Info">{{ businessinfo.job_title }}</td> 
      <td class="Info">{{ businessinfo.branch_address }}</td> 
      <td class="Info">{{ businessinfo.website }}</td> 
      <td class="Info">{{ contactinfo.phone_number }}</td> 
      <td class="Info">{{ contactinfo.cell_phone_number }}</td> 
      <td class="Info">{{ contactinfo.email }}</td> 
      <td class="Info">{{ contactinfo.fax_number }}</td> 
      <td> 
       <form action="{% url 'music:delete' %}" method="post" style="display: inline;"> 
       {% csrf_token %} 
        <input type="hidden" name="company_name" value="{{ company_name }}"/> 
        <button type="submit" class="btn btn-default btn-sm"> 
         <span class="glyphicon glyphicon-trash"></span> 
        </button> 
       </form> 
      </td> 
     </tr> 
    {% endfor %} 
</table> 
{% endblock %} 

答えて

0

アクション属性は、フォームテンプレートを作成します{%のurl 'マネージャー:インデックス' %}であるこれはBuisinessCardListViewを指しています。なぜあなたは送信時にリストビューに向かうのでしょうか。

{% extends 'manager/base.html' %} 
    {% block title %}Add a New Business Card{% endblock %} 
    {% block albums_active %}active{% endblock %} 
    {% block body %} 

<div class="container-fluid"> 
<div class="row"> 
    <div class="col-sm-12 col-md-7"> 
     <div class="panel panel-default"> 
      <div class="panel-body"> 
       <form class="form-horizontal" action="{% url 'manager:business_card-add' %}" method="post" enctype="multipart/form-data"> 
        {% csrf_token %} 
        {% include 'manager/form_template.html' %} 
        <div class="form-group"> 
         <div class="col-sm-offset-2 col-sm-10"> 
          <button type="submit" class="btn btn-success">Add Business Card</button> 
         </div> 
        </div> 
       </form> 
      </div> 
     </div> 
    </div> 
</div> 
</div> 
{% endblock %} 
:あなたは、それはこのように、CREATEVIEWのURLを指す必要が望むものを達成するために

関連する問題