Причина IntegrityError при удалении поля? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть настройка веб-сервиса с бэкэндом Django, и я пытаюсь удалить записи для моих объектов Field. Каждое поле назначается пользователю, и в этом поле проводится ряд оценок. Оценки связаны с полями через внешний ключ. После удаления объекта поля я хочу также удалить все оценки для этого Field, но оставить пользователя.

Я поигрался с параметром on_deletion, и если я установил его на CASCADE, на странице администратора Django отобразятся все связанные с ней объекты оценки, если я попытаюсь удалить объект Field. Тем не менее, я все еще получаю следующую ошибку:

IntegrityError в / admin / dfto / field / update или удалить в таблице "field" Нарушает ограничение внешнего ключа "valuation_field_uuid_fkey "для таблицы "оценка" ДЕТАЛИ: Ключ (uuid) = (f3a52c10-33be-42f9-995d-482025cea17b) по-прежнему упоминается из стол "оценка".

Это мои модели для справки:

class Assessment(models.Model):
    uuid = models.TextField(primary_key=True)
    longitude = models.FloatField(blank=True, null=True)
    latitude = models.FloatField(blank=True, null=True)
    field_uuid = models.ForeignKey('Field', models.CASCADE, db_column='field_uuid',blank=True, null=True, related_name='assessments')
    class Meta:
        db_table = 'assessment'

class Field(models.Model):
    uuid = models.TextField(primary_key=True)
    name = models.CharField(max_length=50, blank=True, null=True)
    country = models.CharField(max_length=50, blank=True, null=True)
    user_email = models.ForeignKey('User', models.DO_NOTHING, db_column='user_email')
    crop_uuid = models.ForeignKey(Crop, models.CASCADE, db_column='crop_uuid')

    class Meta:
        db_table = 'field'

Может кто-нибудь объяснить мне, почему я получаю эту ошибку и / или предоставить мне исправление?

1 Ответ

0 голосов
/ 15 апреля 2019

Я думаю, это потому, что field_uuid имеет аргумент 'models.CASCADE', поэтому, когда вы его удаляете, django также пытается удалить любые ссылки на этот конкретный ключ, не знаю, как это исправить, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...