Вышел Django 5.2
В этом релизе представлены следующие ключевые нововведения:
— Автоматический импорт всех моделей в оболочке Django;
— Поддержка составных первичных ключей с использованием django.db.models.CompositePrimaryKey
;
— Упрощенное переопределение BoundField
на уровне формы, поля или проекта.
Про CompositePrimaryKeyCompositePrimaryKey
позволяет создавать первичные ключи, состоящие из нескольких полей, что особенно полезно при моделировании связей многие-ко-многим.
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=100)
class Order(models.Model):
reference = models.CharField(max_length=20, primary_key=True)
class OrderLineItem(models.Model):
pk = models.CompositePrimaryKey("product_id", "order_id")
product = models.ForeignKey(Product, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
quantity = models.IntegerField()
В этом примере модель
OrderLineItem
использует составной первичный ключ, состоящий из полей product_id
и order_id
. Это гарантирует уникальность каждой комбинации продукта и заказа. Ранее для достижения подобного поведения приходилось использовать дополнительные настройки или сторонние библиотеки. #django #факт
@zen_of_python
>>Click here to continue<<