Можно ли использовать django AutoField для пользовательской логики инкремента в дополнение к отдельному автоматическому ID AutoField?

У меня следующая модель:

class Lot(models.Model):
    parent_lot_number = models.IntegerField(default=0)
    child_lot_number = models.IntegerField(null=True, blank=True)

Я хочу следующее поведение:

  • номер родительской партии должен увеличиваться только тогда, когда пользователь вводит данные в определенную форму, которая создает новую родительскую партию
  • .
  • номер дочерней партии должен увеличиваться постоянно, в пределах каждого родителя

Например, следующие данные должны быть действительными для записей лота:

  • parent_lot_number: 1, child_lot_number: null
  • parent_lot_number: 1, child_lot_number: 1
  • parent_lot_number: 1, child_lot_number: 2
  • >parent_lot_number: 2, child_lot_number: null
  • parent_lot_number: 2, child_lot_number: 1
  • parent_lot_number: 1, child_lot_number: 3
  • номер_лот_родителя: 3, номер_лот_ребенка: null

Прямо сейчас у меня есть рабочая бизнес-логика, чтобы сделать это в моих представлениях/формах путем получения максимального значения номера_лота_ребенка и номера_лота_родителя, а затем присвоения значения после создания записи.

Вместо этого, могу ли я добиться этого, удалив default=0 для parent_lot_number и используя AutoField? Когда я устанавливаю parent_lot_number = models.AutoField(), я получаю ошибки "NOT NULL constraint failed: main_lot.parent_lot_number" или "ValueError: Модель main.Lot не может иметь более одного автогенерируемого поля." из-за скрытого столбца ID в django. Это столбец, который я не могу отбросить

Вернуться на верх