Django - Ошибка целостности при попытке удаления проекта

У меня есть только одна модель, и это единственная модель, которая мне нужна. Как спроектировать модель таким образом, чтобы не получить ошибку ограничения внешнего ключа?

Вот моя модель:

class Project(models.Model):
    STATUS = (
        ('Inititated', 'Inititated'),
        ('Paused', 'Paused'),
        ('In progress', 'In progress'),
        ('Aborted', 'Aborted'),
        ('Completed', 'Completed')
    )

PHASE = (
    ('1', '1'),
    ('2', '2'),
    ('3', '3'),
    ('4', '4'),
    ('5', '5'),
    ('6', '6'),
    ('7', '7'),
    ('8', '8'),
    ('9', '9'),
    ('10', '10')
)

p_id = models.IntegerField(null=True)
p_name = models.CharField(max_length=100, null=True)
c_name = models.CharField(max_length=100, null=True)
c_mail = models.CharField(max_length=100, null=True)
init_date = models.DateField(null=True)
ect = models.DateField(null=True)
status = models.CharField(max_length=200,null=True, choices=STATUS)
collabs = models.IntegerField(null=True)
phase = models.IntegerField(null=True, choices=PHASE)

def __str__(self):
    return self.p_name

@property
def phase_percentage(self):
    return self.phase * 10

Ваша проблема заключается в phase = models.IntegerField(null=True, choices=PHASE). Потому что, как мы видим, это IntegerField, но вы предоставляете ему выбор со строками:

PHASE = (
    ('1', '1'),
    ('2', '2'),
    (...)
    ('10', '10')
)

Измените его на:

PHASE = (
    (1, "1"),
    (2, "2"),
    ...
    (3, "3")
)

Потому что первое значение - это значение, фактически передаваемое в поле, а второе - "человекочитаемое" значение, которое отображается в формах и т.д.

Перед удалением вам может понадобиться изменить значение этого поля в ваших объектах.

Вернуться на верх