Кажется, у вас могут быть две проблемы; перекрывающееся доступное свойство + поле и доступность не отображаются так, как вы ожидаете от администратора.
Выберите один из способов (свойство или поле), чтобы представить доступность, и используйте его. Дон и Сет показали способ сделать это, используя поле, а Даниэль и Игнасио предложили пойти со свойством.
Поскольку вы действительно хотите, чтобы это поле отображалось в админке, просто используйте поле; помогите ему help_text = "...", удалите @property и переопределите save ().
class Product(models.Model):
# ...
availability = models.IntegerField(help_text="(updated on save)")
# Use Seth's save()
def save(self, *args, **kwargs):
self.availability = self.inventory - self.commited
super(Product, self).save(*args, **kwargs)
Это не лучший способ сделать что-то с точки зрения нормализованных данных, но, вероятно, это будет самое простое решение вашей текущей проблемы.
Если вы используете транк вместо Django-1.1.1, вы также можете использовать readonly_fields в админке.