Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设计Django API来处理;“动态”;形式?_Django_Api_Django Rest Framework_Dynamicform - Fatal编程技术网

如何设计Django API来处理;“动态”;形式?

如何设计Django API来处理;“动态”;形式?,django,api,django-rest-framework,dynamicform,Django,Api,Django Rest Framework,Dynamicform,我构建了一个包含表单数组的角度表单。因此,用户可以控制在表单中添加字段或删除字段。我想了解的是如何设计一个DjangoAPI来处理这种动态表单的post 我不希望用户为了下订单而在网站上创建帐户。这可能吗?您应该更关心如何为数据建模,而不是考虑界面。以下是用于建模数据的几个选项: 选项一是使用常规Django ORM,在这种情况下,您可以对任何动态属性使用 选项二是使用任何无模式的数据模型,例如基于文档的数据库(例如 下面是一个关于如何使用Django的JSONField的简单示例: 您的型

我构建了一个包含表单数组的角度表单。因此,用户可以控制在表单中添加字段或删除字段。我想了解的是如何设计一个DjangoAPI来处理这种动态表单的post


我不希望用户为了下订单而在网站上创建帐户。这可能吗?

您应该更关心如何为数据建模,而不是考虑界面。以下是用于建模数据的几个选项:

  • 选项一是使用常规Django ORM,在这种情况下,您可以对任何动态属性使用

  • 选项二是使用任何无模式的数据模型,例如基于文档的数据库(例如

下面是一个关于如何使用Django的
JSONField
的简单示例:

您的型号:

class Order(models.Model):
    customer = models.ForeignKey(User, on_delete=models.CASCADE)
    #any additional static fields  
    properties = JSONField()
你的看法:

def create_order_view(request):
    if request.method == "POST":
        #do your validation
        Order.objects.create(user=request.user, properties=request.POST["properties"])
        return Response(status=200)
这个示例是完全不完整的,因为您必须添加验证错误处理,最好使用Django来构建API


最后,正如我所说,有很多方法可以对数据进行建模,除了我上面提到的,还有很多其他方法。要决定使用哪种模型,您必须知道如何使用数据,以便优化查询时间,此外还有许多其他因素,但这超出了本asnwer的范围

您应该更关心如何为数据建模,而不是考虑接口。以下是用于建模数据的几个选项:

  • 选项一是使用常规Django ORM,在这种情况下,您可以对任何动态属性使用

  • 选项二是使用任何无模式的数据模型,例如基于文档的数据库(例如

下面是一个关于如何使用Django的
JSONField
的简单示例:

您的型号:

class Order(models.Model):
    customer = models.ForeignKey(User, on_delete=models.CASCADE)
    #any additional static fields  
    properties = JSONField()
你的看法:

def create_order_view(request):
    if request.method == "POST":
        #do your validation
        Order.objects.create(user=request.user, properties=request.POST["properties"])
        return Response(status=200)
这个示例是完全不完整的,因为您必须添加验证错误处理,最好使用Django来构建API


最后,正如我所说,有很多方法可以对数据进行建模,除了我上面提到的,还有很多其他方法。要决定使用哪种模型,您必须知道如何使用数据,以便优化查询时间,此外还有许多其他因素,但这超出了本asnwer的范围

对我来说,我使用Django RESTframework构建api

实现这一点的方法很简单,只需创建模型并遍历作为动态部分的项,然后将Foreignkey字段分配给obj.id created。首先,我创建了主模型实例,然后创建了子实例的实例。我将使用Order和Item来演示这个想法,Item实例将具有Foreinkey字段到Order模型

在项目模型中,将“related_name”参数添加到Foreinkey字段

order = models.ForeignKey(Order, related_name='items',on_delete=models.CASCADE)
序列化程序.py


对我来说,我使用Django RESTframework构建api

实现这一点的方法很简单,只需创建模型并遍历作为动态部分的项,然后将Foreignkey字段分配给obj.id created。首先,我创建了主模型实例,然后创建了子实例的实例。我将使用Order和Item来演示这个想法,Item实例将具有Foreinkey字段到Order模型

在项目模型中,将“related_name”参数添加到Foreinkey字段

order = models.ForeignKey(Order, related_name='items',on_delete=models.CASCADE)
序列化程序.py


您的模型是什么样子的?我的模型有一个固定的部分:联系人详细信息(姓名和手机号码)和送货详细信息(街道地址、城市…),动态部分是一个表单组,其中包含:3个文本字段、一些选项字段和一个图像字段。您的模型是什么样子的?我的模型有一个固定的部分:联系人详细信息(姓名和手机号码)和配送详细信息(街道地址、城市…),动态部分是一个表单组,其中包含:3个文本字段、一些选项字段和一个图像字段。我正在尝试制作一个简单的程序来测试这个想法,并将很快回复您!:)请检查上面的答案,这对我来说非常有效。我正在尝试制作一个简单的程序来测试这个想法,很快会回复你的!:)请核对上面的答案,它对我来说非常有效。