我如何在Django中生成一个多步骤流程而不改变页面(输出一个新请求)?

2024-04-25 21:25:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型(类别),它引用自己作为其父类别。 例如,可以使用过滤器找到类别的根,并将其聚合到选择下拉列表中。但是,如何使用选定的类别子类别生成另一个下拉列表

据我所知,解决方案是使用Django REST api,但仅仅选择一个类别似乎有点过分

有人有什么建议吗

我的模型是:

class Category(models.Model):
    # PK
    cat_id = models.IntegerField(primary_key=True)

    # Foreign
    parent_category = models.ForeignKey('self', on_delete=models.CASCADE, blank=True, null=True)

    # Column
    name = models.CharField(max_length=128) # the name of the category
    limit_message = models.CharField(max_length=255, null=True, blank=True)
    level = models.PositiveIntegerField() # 1 for root (major category) followed by 2, 3 ...
    is_leaf = models.BooleanField()
    is_enabled = models.BooleanField(default=True)

    def __str__(self):
        return self.name

Tags: thename模型selftrue列表ismodels
1条回答
网友
1楼 · 发布于 2024-04-25 21:25:27

您可以使用ajax使用父id请求子类别的url。您需要编写一个以json格式返回子类别的视图

假设您的categories.py视图有一个返回json中的子类别的函数

return HttpResponse(simplejson.dumps(categories), content_type="application/json")

使用ajax从前端请求数据

$.ajax({
    url: request_url,
    success: function(data){
    $.each(data, function(id, text){
        $('select[name=sub-category]').append(
            $('<option></option>').val(id).html(text)
        );
    };
});

相关问题 更多 >