Моя таблица определена следующим образом.
class Role(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
to_field="email",
db_column="user",
on_delete=models.CASCADE
)
vertical = models.ForeignKey(
Verticals,
to_field="name",
db_column="vertical",
on_delete=models.CASCADE
)
product_domain = models.ForeignKey(
ProductDomains,
to_field="name",
db_column="product_domain",
null=True,
on_delete=models.CASCADE
)
class Meta:
constraints = [
models.UniqueConstraint(fields=[
'user',
'vertical',
'product_domain'
],
name='unique-permissions-per-user')
]
Вот сгенерированные миграции
migrations.CreateModel(
name='Role',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('product_domain', models.ForeignKey(db_column='product_domain', null=True, on_delete=django.db.models.deletion.CASCADE, to='verticals.ProductDomains', to_field='name')),
('user', models.ForeignKey(db_column='user', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, to_field='email')),
('vertical', models.ForeignKey(db_column='vertical', on_delete=django.db.models.deletion.CASCADE, to='verticals.Verticals', to_field='name')),
],
),
migrations.AddConstraint(
model_name='role',
constraint=models.UniqueConstraint(fields=('user', 'vertical', 'product_domain'), name='unique-permissions-per-user'),
),
Сериализаторы для ролевой модели:
class RoleSerializer(serializers.ModelSerializer):
class Meta:
model = Role
fields = '__all__'
Вот интерактивная консоль для того же
Ссылка на изображение консоли (невозможно добавить из-за меньшей репутации)
Здесь UniqueConstraint не работает, почему? Я использую models.UniqueConstraint в одном и том же проекте много раз, но в этом случае он не работает.
Моя конфигурация Django - 3.0.4 Django Rest Framework - 3.11.0 База данных - MySql
Пожалуйста, помогите и спросите, отсутствует ли какая-либо информация.