Мышление Как получить экземпляр pk, существующий во время validate_unique
? не рекомендуется перезаписывать метод validate_unique, и я не знаю, будет ли правильно проверять уникальные поля в методе clean()
.
, но представьте себе следующую ситуацию: вы хотите показать admin пользователи, экземпляр которых уже существует, поэтому они могут редактировать его, если захотят, я думаю, это будет более интуитивно понятно при работе с тысячами данных.
следующий код является лишь примером - подумайте о это как псевдокод, хотя я попробовал его, и он работает, я знаю, что он мог бы быть лучше
def clean(self):
lockup ={}
unique_togethers = self._meta.unique_together[0]#these could throw an error
for field in unique_togethers:
f = self._meta.get_field(field)
value = getattr(self, f.attname)
if value is None:
continue
if f.primary_key and not self._state.adding:
continue
lockup[str(field)] = value
qs = snippet.objects.filter(**lockup)
if qs.exists and self._state.adding:
raise ValidationError(
format_html('''this object all ready exist plese edit it on <a href="{}">Edit</a>''',
reverse('admin:testing_snippet_change', args=(qs[0].pk,))))
Правильно ли этот подход, как применить его к методу validation_unique для работы во всех уникальных валидациях?
Результат