Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/mptt/fields.py: 71%

15 statements  

« prev     ^ index     » next       coverage.py v6.4.4, created at 2023-07-17 14:22 -0600

1""" 

2Model fields for working with trees. 

3""" 

4from django.db import models 

5 

6from mptt.forms import TreeNodeChoiceField, TreeNodeMultipleChoiceField 

7 

8 

9__all__ = ("TreeForeignKey", "TreeOneToOneField", "TreeManyToManyField") 

10 

11 

12class TreeForeignKey(models.ForeignKey): 

13 """ 

14 Extends the foreign key, but uses mptt's ``TreeNodeChoiceField`` as 

15 the default form field. 

16 

17 This is useful if you are creating models that need automatically 

18 generated ModelForms to use the correct widgets. 

19 """ 

20 

21 def formfield(self, **kwargs): 

22 """ 

23 Use MPTT's ``TreeNodeChoiceField`` 

24 """ 

25 kwargs.setdefault("form_class", TreeNodeChoiceField) 

26 return super().formfield(**kwargs) 

27 

28 

29class TreeOneToOneField(models.OneToOneField): 

30 def formfield(self, **kwargs): 

31 kwargs.setdefault("form_class", TreeNodeChoiceField) 

32 return super().formfield(**kwargs) 

33 

34 

35class TreeManyToManyField(models.ManyToManyField): 

36 def formfield(self, **kwargs): 

37 kwargs.setdefault("form_class", TreeNodeMultipleChoiceField) 

38 return super().formfield(**kwargs)