| 1112 | """A formset for child objects related to a parent.""" |
| 1113 | |
| 1114 | def __init__( |
| 1115 | self, |
| 1116 | data=None, |
| 1117 | files=None, |
| 1118 | instance=None, |
| 1119 | save_as_new=False, |
| 1120 | prefix=None, |
| 1121 | queryset=None, |
| 1122 | **kwargs, |
| 1123 | ): |
| 1124 | if instance is None: |
| 1125 | self.instance = self.fk.remote_field.model() |
| 1126 | else: |
| 1127 | self.instance = instance |
| 1128 | self.save_as_new = save_as_new |
| 1129 | if queryset is None: |
| 1130 | queryset = self.model._default_manager |
| 1131 | if self.instance._is_pk_set(): |
| 1132 | qs = queryset.filter(**{self.fk.name: self.instance}) |
| 1133 | else: |
| 1134 | qs = queryset.none() |
| 1135 | self.unique_fields = {self.fk.name} |
| 1136 | super().__init__(data, files, prefix=prefix, queryset=qs, **kwargs) |
| 1137 | |
| 1138 | # Add the inline foreign key field to form._meta.fields if it's defined |
| 1139 | # to make sure validation isn't skipped on that field. |
| 1140 | if self.form._meta.fields and self.fk.name not in self.form._meta.fields: |
| 1141 | self.form._meta.fields = list(self.form._meta.fields) |
| 1142 | self.form._meta.fields.append(self.fk.name) |
| 1143 | |
| 1144 | def initial_form_count(self): |
| 1145 | if self.save_as_new: |