У меня есть две модели:
class ReceiptBook(models.Model):
serial_no = models.IntegerField(unique=True)
leaf_start = models.IntegerField()
leaf_end = models.IntegerField()
issued_person = models.ForeignKey(Person)
issued_date = models.DateField()
status = models.CharField(max_length=15,choices=st,default='IS')
class ReceiptLeaf(models.Model):
receipt_book = models.ForeignKey(ReceiptBook, limit_choices_to={'status': 'IS'})
receipt_no = models.IntegerField()
receipt_date = models.DateField()
received_from = models.CharField(max_length=150)
kudumba_unit = models.CharField(max_length=20, choices=units)
amount = models.DecimalField(max_digits=20, decimal_places=2)
В моем интерфейсе администратора я показываю ReceiptLeaf модель с подкладкой ReceiptBook . Теперь я хочу инициализировать значение поля receive_no , используя поле receive_book т.е. используя значение leaf_start и leaf_end с использованием receive_book объекта.
У меня есть эта функция на admin.py:
def get_receipt_no(self):
receipt = ReceiptLeaf.objects.filter(receipt_book=?) #how to get receipt book object here
no = receipt.receipt_no + 1
if not no:
no = receipt.receipt_book.leaf_start
return no
, который используется formfield_for_dbfield метод:
def formfield_for_dbfield(self, db_field, **kwargs):
field = super(ReceiptLeafInline, self).formfield_for_dbfield(db_field, **kwargs)
if db_field.name == 'receipt_no':
field.initial = get_receipt_no(self)
return field
Как передать значение квитанцию в get_receipt_no () функцию? Поскольку с одним ReceiptBook связано более одного ReceiptLeaf, мне нужен объект receive_book , чтобы правильно инициализировать поле receive_no .