27

How do you limit the inline formset in django admin?

Problem:

I have a table A with 1 to n relationship with B. Table A should have at least one Table B item and a max of 5 Table B items.

Francisco
  • 10,918
  • 6
  • 34
  • 45
ginad
  • 1,863
  • 2
  • 27
  • 42

2 Answers2

50

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-options

Specify max_num in your Inline definition to limit the number.

extra specifies how many blank inlines to show.

Is the 1 inline required? As in you want to trigger a validation error if table B isn't filled with at least 1 row?

Yuji 'Tomita' Tomita
  • 115,817
  • 29
  • 282
  • 245
  • I'm not aware of a way to disable the add button. – Yuji 'Tomita' Tomita Mar 30 '11 at 02:34
  • The add button is hidden by default if the total number of forms shown crosses the max_num specified. So if your max_num is 5 , and you want to disable the add button specify extra = 5 Else whenever total forms reaches 5, add button will be hidden – Snigdha Batra Aug 18 '14 at 03:32
0

The enabling / disabling of the add button in an inline is managed through the _has_add_permission method

you could add to your inline class:

def _has_add_permission(self, request, obj=None):
   # add/remove possibility to add a line to an inline
    if obj.table_b_items.count() < 5:
        return True
    else:
        return False
Skratt
  • 289
  • 4
  • 13