Вы должны быть более озабочены тем, как моделировать свои данные, чем думать о своем интерфейсе. Вот несколько вариантов моделирования ваших данных:
Первый вариант - использовать обычную Django ORM, и в этом случае вы можете использовать JSONField
для любые свойства Dynami c.
Второй вариант - использовать любую модель данных без схемы, например базы данных на основе документов (например, MongoDB ).
Вот простой пример того, как использовать 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 rest-framework для создания вашего API.
Наконец, как я уже сказал, есть много вариантов для моделирования ваших данных, в дополнение к тому, что я упомянул выше, есть много других. Чтобы решить, какую модель использовать, вы должны знать, как будут использоваться ваши данные, чтобы вы могли оптимизировать время запроса, кроме того, есть много других факторов, но это выходит за рамки этого ответа.