django表2-继承表的delete列和delete_item

问题描述 投票:2回答:1

我想为我的所有表列表(每个模型一个)和视图中的(一个delete_item)函数提供一个抽象函数。

我不知道如何进行删除(此表中的列)并将模型传递给视图中的delete_item函数

Tables.py


    ############ Abstract Table
    class abs_Table(tables.Table):

    SN = tables.Column(empty_values=(), orderable=False)
    delete = tables.LinkColumn('delete_item', args=[A('pk'), ?????Model???],  attrs={
         'a': {'class': 'btn btn-small btn-dark'}
    # })


    def __init__(self, *args, **kwargs):
        super(abs_Table, self).__init__(*args, **kwargs)
        self.counter = itertools.count(1)


    def render_SN(self, record):

        pg = getattr(self, 'paginator', None)
        if pg:
            v = next(self.counter)
            return v + self.paginator.per_page * (self.page.number-1)
        else:
            return next(self.counter)


    class Meta:
        model = None
        fields = [ 'SN', 'id',  'delete', ]

        attrs = {"class": "table-striped table-bordered", 'width': '100%'}
        empty_text = "There are no Records matching the search criteria..."

然后用于模型表

Tables.py


    class ModelTable(abs_Table):


    class Meta(abs_Table.Meta):
        model = modelname
        fields = abs_Table.Meta.fields+[selected_model_fields]

Views.py



      def delete_item(request, pk, delmodel):
        obj = get_object_or_404(delmodel, id=pk)


        if request.method == "POST":

                    obj.delete()

            return redirect("../")
        else:
            pass


        context = {
            'object': obj
        }

        return render(request, '/delete_confirmation.html', context)

django django-tables2
1个回答
0
投票

对于“视图”部分。在将模型作为字符串传递然后使用apps.get_model将其更改为模型后,它对我有用。

views.py`

from django.apps import apps
def delete_item(request, pk, delmodel):

    DeleteModel = apps.get_model("Myapp", delmodel)
    obj = get_object_or_404(DeleteModel, id=pk)
    if request.method == "POST":
        obj.delete()
        return redirect("../")
    else:
        pass

    context = {
        'object': obj
    }

    return render(request, '/delete_confirmation.html', context)

仍然无法正确处理确认,并且表中的delete列需要改进。

© www.soinside.com 2019 - 2024. All rights reserved.