Django postgres Перенос моделей столбец discount.category_name_id не существует - PullRequest
0 голосов
/ 16 октября 2018

Привет, я пытаюсь объединить базу данных Django и базу данных postgresql.

Вот мои таблицы базы данных:

tables

My models.py в Django

from django.db import models

# Create your models here.
class Categories(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.TextField(null=True, unique=True)

    class Meta:
        db_table = 'categories'

    def __str__(self):
        return self.name
class Website(models.Model):
    id = models.IntegerField(primary_key=True)
    site = models.TextField(null=True, unique=True)

    class Meta:
        db_table= 'website'

    def __str__(self):
        return self.site

class Discount(models.Model):
    id = models.IntegerField(primary_key=True)
    product_name = models.TextField()
    product_price = models.TextField()
    product_old_price = models.TextField()
    product_link = models.TextField()
    category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name')
    product_site = models.ForeignKey(Website, on_delete=models.CASCADE, null=True, to_field='site')
    product_image = models.TextField()
    class Meta:
        db_table = 'discount'

    def __str__(self):
            return self.product_name

Мне удалось связать Django и postgresql вместе, следуя инструкциям, но когда я впервые пытаюсь перенести базу данных,приходят с этой ошибкой:

столбец discount.category_name_id не существует LINE 1: ... "." product_old_price "," discount "." product_link "," discount "... ^ ПОДСКАЗКА:Возможно, вы имели в виду ссылку на столбец "discount.category_name".

я, хотя я связал свой внешний ключ из discount.category_name с category.name с to_field = 'name' в ForeignKeyField, но каким-то образом он использовалthe discount.category_name_id? Я не знаю, где находится category_name_id, его нет в моих таблицах

Любая помощь будет признательна!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Мне удалось исправить это, добавив

db_column = 'category_name'

в поле ForeignKey

Кажется, мне нужно указатькакой столбец на самом деле является внешним ключом в моих таблицах Postgresql для ORM

category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name', db_column='category_name')
    product_site = models.ForeignKey(Website, on_delete=models.CASCADE, null=True, to_field='site', db_column='product_site')
0 голосов
/ 16 октября 2018

Поле ниже не отражено в базе данных, пожалуйста, проверьте ваше имя поля базы данных, если нет, то создайте одну фиктивную миграцию и напишите скрипт для этого

    category_name = models.ForeignKey(Categories, on_delete=models.CASCADE, null=True, to_field='name')
...