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
« 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
6from mptt.forms import TreeNodeChoiceField, TreeNodeMultipleChoiceField
9__all__ = ("TreeForeignKey", "TreeOneToOneField", "TreeManyToManyField")
12class TreeForeignKey(models.ForeignKey):
13 """
14 Extends the foreign key, but uses mptt's ``TreeNodeChoiceField`` as
15 the default form field.
17 This is useful if you are creating models that need automatically
18 generated ModelForms to use the correct widgets.
19 """
21 def formfield(self, **kwargs):
22 """
23 Use MPTT's ``TreeNodeChoiceField``
24 """
25 kwargs.setdefault("form_class", TreeNodeChoiceField)
26 return super().formfield(**kwargs)
29class TreeOneToOneField(models.OneToOneField):
30 def formfield(self, **kwargs):
31 kwargs.setdefault("form_class", TreeNodeChoiceField)
32 return super().formfield(**kwargs)
35class TreeManyToManyField(models.ManyToManyField):
36 def formfield(self, **kwargs):
37 kwargs.setdefault("form_class", TreeNodeMultipleChoiceField)
38 return super().formfield(**kwargs)