У меня возникают проблемы с проверкой формы, чтобы она только когда-либо выбирала отдельного партнера. Классы работают так:Подтвердить поле встроенного внешнего ключа
class EmpployeeAdmin(admin.ModelAdmin):
#.......
class EmployeeRoles(models.Model):
partner = model.ForeignKey(Partner, relative_name='employee')
employee = model.ForeignKey(Employee, relative_name='partner')
class EmployeeRolesInline(admin.TabularInline):
model = EmployeeRoles
extra = 0
form = EmployeeRolesForm
Внутри мой forms.py я использую функцию clean_partner, чтобы попытаться подтвердить, что нынешний сотрудник имеет только одного партнера то же имя. Они могут иметь несколько объектов EmployeeRoles с разными партнерами, но их следует назначать только одному партнеру.
class EmployeeRolesForm(forms.ModelForm):
def clean_partner(self):
partner = self.cleaned_data.get('partner')
partner_ids=[int(p.partner_id) for p in self.instance.employee.partners.all()]
if self.instance.partner_id is not None:
return
else:
if partner.id in partner_ids:
raise forms.ValidationError("Partner already chosen")
Это не работает, он дает мне ошибку, что self.instance.employee.partners.all() пусто. Я думаю, что это связано с тем, что форма неограничена, и я не уверен, как решить проблему. Это та же проблема, что и у меня, когда я пытался отфильтровать выбор партнера после каждого сохранения, поэтому вы видите только тех партнеров, которых у вас нет, когда вы пытаетесь добавить новую рабочую группу. Если кто-то может предложить способ об ошибке, я был бы признателен.