Django, ошибка целостности в модели с саморегулированием и странное поведение postgres - PullRequest
0 голосов
/ 14 июля 2020

У меня следующая модель:

class Group(models.Model):
    name = models.CharField(max_length=255)
    milking = models.BooleanField(help_text=GroupHelpTexts.MILKING)
    sub_groups = models.ForeignKey('self',
                                   on_delete=models.DO_NOTHING,
                                   blank=True)
    herd = models.ForeignKey(on_delete=models.CASCADE,
                             to=Herd)

    def __str__(self):
        return self.name

Когда я пытаюсь добавить новую группу в админке, я получаю следующую ошибку:

IntegrityError at /admin/farm_api/group/add/
null value in column "sub_groups_id" violates not-null constraint
DETAIL:  Failing row contains (5, milking 1, t, 1, null).

Это первая проблема.

Вторая проблема заключается в том, что БД показывает эту таблицу как пустую (по крайней мере, при доступе из pg admin 4)

SELECT * from farm_api_group;

выводит пустую таблицу и когда я проверяю из оболочки :

from farm_api.models.group_models import Group
q = Group.objects.all()
print(len(q))
0
print(q)
<QuerySet []>
 

1 Ответ

1 голос
/ 14 июля 2020

Вы должны установить null=True, поскольку sub_groups не будет при создании " первый " Group экземпляр.

class Group(models.Model):
    sub_groups = models.ForeignKey('self',
                                   on_delete=models.DO_NOTHING,
                                   blank=True,
                                   <b>null=True</b>)
    # other code
...