Можно ли использовать 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. Это столбец, который я не могу отбросить