Посоветуйте по моделированию орм в django
Я создаю веб-приложение, в котором пользователи размещают заказы с вложенной информацией. Мне нужен совет по лучшей практике, чтобы я мог провести дополнительные исследования.
Идея заключается в том, что пользователь либо загружает существующий заказ, либо создает новый заказ. Затем они заполняют последующие поля заказа, которые могут быть по принципу "один ко многим". Моя первоначальная идея заключалась в использовании переменной для order_id и использовании внешнего ключа для связи с экземплярами других классов. Однако это кажется слишком сложным. order_id должен быть уникальным и последовательным. Является ли это лучшим подходом к решению данной проблемы?
class Order(models.Model):
order_id= xxxx
created_by = xxxx
class A(models.Model):
order_id = models.ForeignKey(xxxxx)
someclassafield = xxxx
class B(models.Model):
order_id = models.ForeignKey(xxxxx)
someclassbfield = xxxx
Это даст пользователю возможность создавать такие заказы, как показано ниже:
Order 1
(Class_A, order_id, someclassafield)
(Class_A, order_id, someclassafield)
(Class_A, order_id, someclassafield)
(Class_B, order_id, someclassbfield)
Order 2
(Class_A, order_id, someclassafield)
(Class_A, order_id, someclassafield)
(Class_B, order_id, someclassbfield)
(Class_B, order_id, someclassbfield)
Отвечаю на свой вопрос, вдруг это будет полезно другим. Исходя из исследования, то, что я на самом деле хочу, это отношения один ко многим. Источник:
https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_one/
from django.db import models
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField()
def __str__(self):
return "%s %s" % (self.first_name, self.last_name)
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
class Meta:
ordering = ['headline']