Заполните существующие строки Django, но нет строк - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь перенести свою модель:

class EntitiesModel(models.Model):
    entity_id = models.TextField()
    entity_name = models.TextField()
    entity_type = models.TextField(choices=ENTITY_TYPES)

    #generic key to sources or targets
    content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE)
    object_id = models.PositiveIntegerField()
    content_object = GenericForeignKey('content_type', 'object_id')

И я получаю сообщение об ошибке:

Вы пытаетесь добавить необнуляемое поле 'entity_name' влица моделируются по умолчанию;мы не можем этого сделать (базе данных нужно что-то для заполнения существующих строк).

Но когда я проверяю базу данных:

>>>from forward import models
>>>models.EntitiesModel.objects.all()
<QuerySet []>

Есть ли у вас какие-либо подсказки, что может вызватьэто проблема?

1 Ответ

0 голосов
/ 06 июня 2018

Эти поля не могут оставаться пустыми, вы должны добавить blank=True, чтобы база данных приняла, что они могут иметь пустое значение.

entity_id = models.TextField(blank=True)
entity_name = models.TextField(blank=True)
entity_type = models.TextField(blank=True,choices=ENTITY_TYPES)

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

EntitiesModel.objects.create(
   entity_id = "Value",
   entity_name = "name",
   entity_type = 'type',
   content_object = 'instance',
)

На основе вашего обратного отслеживания:

Вы пытаетесь добавитьнеобнуляемое поле 'entity_name' для предоставления права

Вы пытаетесь добавить значение, которое может быть null None в python, Django выдаст ошибку.таким образом, у вас есть аргумент null=True, который позволяет полю принимать пустые значения.

entity_id = models.TextField(blank=True,null=True)
entity_name = models.TextField(blank=True,null=True)
entity_type = models.TextField(blank=True,choices=ENTITY_TYPES,null=True)

Если вы не хотите хранить пустые значения , убедитесь, что значение равноне null или не None до создания экземпляра

...