从Django-rest检索数据以表格形式显示

时间:2019-06-13 12:06:49

标签: python django vuejs2 django-rest-framework

我有两个与ForeignKey链接的类。我的第一堂课是“类别”,具有“ ID”和“名称”属性。第二类是“文档”,具有“ ID”,“标题”和“用户”属性,最后一个与第一类中定义的类别链接。

我正在开发基于Vue的前端,因此我想知道如何从django-rest检索数据以表格形式显示。 例如,当用户添加新文档时,他必须在所有类别选项之间进行选择。请注意,类别对于所有文档都是通用的。

示例:类别= [{“ ID”:0,“名称” Sports“},{” ID“:1,1,”名称“:”音乐“}]

添加新文档的表单:

标题:XXXX

类别:
运动,
音乐

models.py


from django.db import models

class Category(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)

class Documents(models.Model):
    id = models.AutoField(primary_key=True)
    title= models.CharField(max_length=200)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

我认为,如果我得到如下所示的答案,它将解决我的问题。

["docs": 
     [{"ID": 1, "Title": "Doc1", "Category": Sports}, 
     {"ID": 2, "Title": "Doc2", "Category": Music}], 
 "categories": 
     [{"ID": 0, "Name: "Sports"}, 
     {"ID": 1, "Name": "Music"}]

3 个答案:

答案 0 :(得分:0)

不了解Vue,但您可以通过GET请求获取所有类别,然后使用这些类别作为选项填充下拉菜单,并获得提交时的下拉菜单值。

答案 1 :(得分:0)

在创建表单之前,您可以单独请求获取所有类别。

为此,您需要创建CategorySerializer和ListCategoryProvider

class CategorySerializer(serializers.ModelSerializer):

    class Meta:
        model = Category
        fields = {'name'}

class ListCategoryProvider(generics.ListAPIView):
    serializer_class = CategorySerializer

    def get_queryset(self):
        queryset = Category.objects.all()
        return queryset

然后,您需要解析包含所有类别名称的JSON,以在表单中显示它们

答案 2 :(得分:0)

1)在Django rest中为类别和文档编写一个序列化器。请通过串行器https://www.django-rest-framework.org/api-guide/serializers/

的链接

2)用html编写表格,您可以在其中插入文档。在javascript(vue)中,您可以为该类别调用ajax request(获取请求),并在选择选项中显示该类别的内容。