tortoise/tortoise-orm

unique indexes (for unique_together) on nullable columns need to be optionable for nulls not distinct

開放

#1,641 建立於 2024年6月6日

 (3 則留言) (0 個反應) (0 位負責人)Python (333 個分叉)batch import
enhancementgood first issue

倉庫指標

星標
 (3,863 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

assume that i have two models shop, customer. each shop can have only one customer with an unique phone number till deletes it. please pay attention that customer's phone_number is not unique in column. that is unique together with its shop and delete state.

from tortoise import Model, fields

class Base(Model):
  deleted_at = fields.DateTimeField(null=True)
  class Meta:
    abstract = True

class Shop(Base):
  title = fields.CharField(...)

class Customer(Base):
  phone_number = fields.CharField(...) # not used unique here as you expect
  shop = fields.ForeignKeyField('models.Shop', 'customers', fields.CASCADE)
  class Meta:
    unique_together = ('shop_id', 'phone_number', 'deleted_at')

but this simple code is not work as i expected in postgres that i tested, created index did'nt follow by nulls not distinct when not follow. unique index considers nulls not equal. tortoise version : 0.21.3

貢獻者指南