Как добавить объекты из Django -admin в PostgreSQL базу - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать простое CRUD-APP , в котором я использую PostgreSQL + django + DRF для своего проекта, я создал модель после подключения моих django -настроек к PostgreSQL, я затем перенесли эти модели. После этого я импортировал данные из csv в свою «перенесенную таблицу».

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

Ошибка: повторяющееся значение ключа нарушает уникальное ограничение «gpuApi_products_pkey» ДЕТАЛИ: ключ (id) = (4) уже существует.

Объяснение ошибки: при переносе таблицы поле pk - это идентификатор, которое создается автоматически после миграции в django, поэтому после успешного импорта файла csv я попытался создать новый объект для вставки, но идентификатор внутри базы данных не был обнаружен django - admin, тем самым создавая объект с id = 4.

Есть ли лучший способ импортировать csv в Postgres, который будет одновременно обновляться с помощью django -admin и быть последовательным источником для базы данных.

файл models.py

class Product(models.Model):
    name = models.CharField(max_length=100)
    Architecture = models.TextField(blank=True, null=True)
    Boost_Clock = models.IntegerField(blank=True, null=True)
    Core_Speed = models.IntegerField(blank=True, null=True)
    Memory = models.IntegerField(blank=True, null=True)
    Memory_Speed = models.CharField(max_length=20, blank=True, null=True)
    Memory_Bandwidth = models.CharField(max_length=20, blank=True, null=True)
    DVI_Connection = models.CharField(max_length=20, blank=True, null=True)
    Dedicated = models.CharField(max_length=20, blank=True, null=True)
    Direct_X = models.CharField(max_length=20, blank=True, null=True)
    HDMI_Connection = models.CharField(max_length=20, blank=True, null=True)
    Integrated = models.CharField(max_length=20, blank=True, null=True)
    L2_Cache = models.CharField(max_length=20, blank=True, null=True)
    Manufacturer = models.CharField(max_length=20, blank=True, null=True)
    Max_Power = models.CharField(max_length=20, blank=True, null=True)
    Memory_Bus = models.CharField(max_length=20, blank=True, null=True)
    Memory_Type = models.CharField(max_length=20, blank=True, null=True)
    Power_Connector = models.TextField(blank=True, null=True)
    Process = models.CharField(max_length=20, blank=True, null=True)
    Resolution_WxH = models.CharField(max_length=20, blank=True, null=True)
    SLI_Crossfire = models.CharField(max_length=20, blank=True, null=True)
    price = models.CharField(max_length=20, blank=True, null=True)
    url_name = models.TextField(blank=True, null=True)
    img_of_gpu = models.ImageField(upload_to='pics', blank=True, null=True)

    def __str__(self):
        return self.name

Спасибо за вашу помощь.

...