2017-05-29 35 views
2

(對不起我的英文不好)Django的 - 如何直接從一個按鈕在表

刪除一個對象,我需要刪除的對象,而是直接從y的模板中的對象的列表。

我有一份工作訂單,有備件,但我不知道如何在工作訂單的詳細視圖中只使用一個按鈕創建備件的刪除視圖。這個想法是用戶點擊刪除按鈕。

這是備件

class OrderSparePart(models.Model): 
    # Relations 
    workorder = models.ForeignKey(
      WorkOrder, 
      verbose_name=_('order'), 
     ) 
    # Attributes - Mandatory 
    spare_part = models.CharField(
      max_length=80, 
      verbose_name=_('spare part'), 
     ) 
    # Attributes - Optional 
    price = models.DecimalField(
      max_digits=6, 
      decimal_places=2, 
      null=True, 
      blank=True, 
      verbose_name=_('price'), 
     ) 
    # Object Manager 
    # Custom Properties 
    # Methods 
    def get_absolute_url(self): 
     return reverse('work_orders:detail', kwargs={'order_id': self.workorder.id}) 

    # Meta and String 
    class Meta: 
     verbose_name = _("order spare part") 
     verbose_name_plural = _("order spare parts") 

的模型這是在模板

    {% if spare_parts %} 
        <table class="table"> 
        <thead> 
         <tr> 
         <th>{% trans "Spare Part" %}</th> 
         <th>{% trans "Price" %}</th> 
         <th>{% trans "Delete" %}</th> 
         </tr> 
        </thead> 
        <tbody> 
         {% for part in spare_parts %} 
         <tr> 
         <td><i class="fa fa-gear"></i> {{ part.spare_part }}</td> 
         {% if part.price %} 
         <td>$ {{ part.price }}</td> 
         {% else %} 
         <td></td> 
         {% endif %} 
         <td><a href="#"><i class="fa fa-trash"></i></a></td> 
         </tr> 
         {% endfor %} 
        </tbody> 
        </table> 
       {% else %} 
       <p>NO HAY REPUESTOS ASENTADOS AÚN</p> 
       {% endif %} 

被顯示的想法是使用刪除備件。

我如何使deleteview和鏈接到這?

謝謝!

回答

1

在這裏發發,鞭打通過ID和URL,因爲我做到了: -

{% if spare_parts %} 
       <table class="table"> 
       <thead> 
        <tr> 
        <th>{% trans "Spare Part" %}</th> 
        <th>{% trans "Price" %}</th> 
        <th>{% trans "Delete" %}</th> 
        </tr> 
       </thead> 
       <tbody> 
        {% for part in spare_parts %} 
        <tr> 
        <td><i class="fa fa-gear"></i> {{ part.spare_part }}</td> 
        {% if part.price %} 
        <td>$ {{ part.price }}</td> 
        {% else %} 
        <td></td> 
        {% endif %} 
        <td><a href="url:delete_view" part.id><i class="fa fa-trash"></i></a></td> 
        </tr> 
        {% endfor %} 
       </tbody> 
       </table> 
      {% else %} 
      <p>NO HAY REPUESTOS ASENTADOS AÚN</p> 
      {% endif %} 

UR URL將被sonething這樣的:

url(r'^delete/(?P<part_id>[0-9]+)/$', view.function, name='delete_view'), 

在烏拉圭回合的看法:

def function(request,part_id =None): 
    object = YourModel.objects.get(id=part_id) 
    object.delete() 
    return render(request,'ur template where you want to redirect') 
+0

立即嘗試!!!在一分鐘內告訴你結果。謝謝! – marcosgue

+0

完美的作品,謝謝! – marcosgue

2

在你的html template裏面for循環使用<td>裏面的form標籤來創建刪除對接在如下(CSS類將工作,如果你正在使用bootstrap3):

<form action="{% url 'delete_view' pk=part.pk %}" method="POST"> 
    {% csrf_token %} 
    <input class="btn btn-default btn-danger" type="submit" value="Delete"/> 
</form> 

添加URLPATTERN在urls.py

url(r'^delete-entry/(?P<pk>\d+)/$', views.DeleteView.as_view(), name='delete_book'), 

刪除視圖會像下面views.py

class DeleteView(SuccessMessageMixin, DeleteView): 
model = OrderSparePart 
success_url = '/' 
success_message = "deleted..." 

def delete(self, request, *args, **kwargs): 
    self.object = self.get_object() 
    name = self.object.name 
    request.session['name'] = name # name will be change according to your need 
    message = request.session['name'] + ' deleted successfully' 
    messages.success(self.request, message) 
    return super(DeleteView, self).delete(request, *args, **kwargs) 

注意:導入必要的導入顯示在鏈接中,或者您不必擔心,如果您正在使用諸如pyCharm之類的IDE,它會提示你進行哪些導入。

+0

這工作完美!感謝和消息是非常有用的,但是,我不知道如何重定向到具有備件的工單的詳細視圖。 i。在模型 DEF get_absolute_url定義(自): 返回反向( 'work_orders:細節',kwargs = { '的order_id':self.workorder.id}) 而對於CreateView的工作完美的,但是當我刪除,如果我刪除success_url django給我錯誤,我需要定義一個URL。 – marcosgue

+1

在django中從html模板請求中可以發送使用ajax,jquery或者簡單的按鈕點擊。現在在每種情況下,您需要在urls.py的'urls.py'中定義重定向url,您指定了處理來自客戶端的請求的視圖,'views.py'處理請求。如果您需要訪問數據庫來處理您可以檢索的請求,請使用查詢中的查詢進行更新和刪除,這將會觸發您的數據庫。如果它有幫助,你可以作出迴應或接受它。爲了詳細瞭解,我已將git鏈接與您可能需要的每個結構相關聯。 – Gahan

+0

錯字?我想你的意思是在你的表單動作中使用delete_book而不是delete_view。 – highpost

相關問題