Я пытаюсь найти лучший способ массового создания двух разных типов объектов (Заказы и Клиенты). Каждый Заказ привязан к Заказчику с помощью внешнего ключа.
Объекты определяются следующим образом:
class Customer(models.Model):
unique_cust_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
client_id = models.ForeignKey(Client, on_delete=models.CASCADE)
customer_id = models.CharField(max_length=30)
cohort = models.DateField('Customer cohort')
def __str__(self):
return self.customer_id
class Order(models.Model):
unique_ord_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
order_id = models.CharField(max_length=30)
client_id = models.ForeignKey(Client, on_delete=models.CASCADE)
customer_id = models.ForeignKey(Customer, on_delete=models.CASCADE)
amount = models.IntegerField(default=0)
timestamp = models.DateTimeField('Order creation date')
upload_tag = models.CharField(max_length = 100, default = 'manual_creation')
def __str__(self):
return self.order_id
Поскольку мой первичный ключ генерируется django как uuid, а не как автополе мне может показаться, что нет проблем с его извлечением.
Если первичный ключ создается при выполнении действия bulk_create, а затем генерируется uuid, как я могу получить сами объекты без первичного ключа? (если я сделаю запрос по любому другому полю, он может вернуть более одного экземпляра, поскольку они не являются уникальными значениями в таблице).
Я хотел бы:
df1 = pandas.DataFrame() # All Customer information but uuid generated by django on storage
# Create Customer objects
Customer.objects.bulk_create(
Customer(**vals) for vals in df1.to_dict('records')
)
# Retrieve Customer objects created with df1 and give them to df2
????
df2 = pandas.DataFrame() # All Order information including Customer objects for the ForeignKey
# Create Order objects
Order.objects.bulk_create(
Order(**vals) for vals in df2.to_dict('records')
)
Спасибо вы!