Returns a list of UniqueValidators that should be applied to the field.
(field_name, model_field)
| 63 | |
| 64 | |
| 65 | def get_unique_validators(field_name, model_field): |
| 66 | """ |
| 67 | Returns a list of UniqueValidators that should be applied to the field. |
| 68 | """ |
| 69 | field_set = {field_name} |
| 70 | conditions = { |
| 71 | c.condition |
| 72 | for c in model_field.model._meta.constraints |
| 73 | if isinstance(c, models.UniqueConstraint) and set(c.fields) == field_set |
| 74 | } |
| 75 | if getattr(model_field, 'unique', False): |
| 76 | conditions.add(None) |
| 77 | if not conditions: |
| 78 | return |
| 79 | unique_error_message = get_unique_error_message(model_field) |
| 80 | queryset = model_field.model._default_manager |
| 81 | for condition in conditions: |
| 82 | yield UniqueValidator( |
| 83 | queryset=queryset if condition is None else queryset.filter(condition), |
| 84 | message=unique_error_message |
| 85 | ) |
| 86 | |
| 87 | |
| 88 | def get_field_kwargs(field_name, model_field): |
no test coverage detected