Сообщение django UniqueConstraint communication_error_message не обработаноPython

Программы на Python
Ответить
Anonymous
 Сообщение django UniqueConstraint communication_error_message не обработано

Сообщение Anonymous »

У меня есть эта модель:

Код: Выделить всё

class DataMapping(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
location = models.ForeignKey(Location, null=True, blank=True, on_delete=models.CASCADE)
department = models.ForeignKey(LocationDepartment, null=True, blank=True, on_delete=models.CASCADE)
category = models.ForeignKey(CompanyCategory, on_delete=models.CASCADE)
reason = models.ForeignKey(ReasonForProcessing, on_delete=models.CASCADE)

class Meta:
constraints = [
UniqueConstraint(
name='unique_data_map',
fields=['company', 'location', 'department', 'category', 'reason'],
condition=Q(location__isnull=False),
violation_error_message="This data map has already been added.",
),
UniqueConstraint(
name='unique_data_map_both_none_dep_none',
fields=['company', 'location', 'category', 'reason'],
condition=Q(department__isnull=True),
violation_error_message="This data map has already been added."
),
UniqueConstraint(
name='unique_data_map_both_none',
fields=['company', 'category', 'reason'],
condition=Q(location__isnull=True) & Q(department__isnull=True),
violation_error_message="This data map has already been added."
)
]
с базовой формой модели

Код: Выделить всё

class DataMapForm(forms.ModelForm):
class Meta:
model = DataMapping
fields = (
'location',
'department',
'category',
'reason',
)
widgets = {
'company': forms.HiddenInput()
}
и вид:

Код: Выделить всё

def data_mapping_new(request):
company = get_current_logged_in_company(request)

if request.method == "POST":
form = DataMapForm(request.POST or None)
if form.is_valid():
category = form.save(commit=False)
category.company = company
if form.is_valid():
form.save()
У меня есть аналогичная настройка для другой модели, которая работает нормально, но эта просто вызывает ошибку django.db.utils.IntegrityError: повторяющееся значение ключа нарушает уникальное ограничение «unique_data_map_both_none»
Не следует ли сначала проверить ограничение, если form.is_valid():
Что мне не хватает здесь?
РЕДАКТИРОВАТЬ:
Я использовал аналогичный шаблон для модели где-то еще, и там он работает нормально, с той лишь разницей, что условие находится в поле char, а не во внешнем ключе, как в этой модели. условие=Q(email__isnull=False) & Q(email__gt=''). Может быть, моя проблема в том, как я настроил условие?

Подробнее здесь: https://stackoverflow.com/questions/757 ... ot-handled
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»