私はdjangoとpostgressを使用していますが、非常に奇妙な例外があります。 私はProductModelというモデルオブジェクトを持っています(upcをunique_idとして)。このクラスは、いくつかの定期的なメソッドは何もしています - (私は今理解したように)私はミスを犯したとProductModelを継承したクラスと呼ばれる製品を作成した時代の初めに、残念ながらdjango.db.utils.IntegrityError:レコードを削除するときにテーブルの更新または削除
class ProductModel(models.Model):
def __str__(self):
return self.clean_name + " " + str(self.product_upc)
product_name = models.CharField(max_length=300, blank=True)
product_upc = models.CharField(max_length=300, primary_key=True)
official_price = models.DecimalField(default=0, decimal_places=5, max_digits=10)
mrsp = models.DecimalField(default=0, decimal_places=5, max_digits=10)
last_seen = models.DateTimeField(default=now)
clean_name = models.CharField(max_length=200, default='')
:モデルがどのように見えるか ですファンシー。
p = ProductModel.objects.all().filter(last_seen__month__lt=4,product_name__contains='a')
p.delete()
:私は、このコマンドを使用して、いくつかの製品のレコードを削除しようとすると、今はなく -
class Product(ProductModel):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.create_clean_name()
self.img_list = []
self.scraped_content = ""
self.specs = {}
は今、私は、このクラスはその存在を意識DBとDB doesntのとは何の関係もないことを確認しました
私は次のエラーを取得する -
django.db.utils.IntegrityError: update or delete on table "my_app_productmodel" violates foreign key constraint "f64b7bfb6c6019a35bf6b81e4125240f" on table "my_app_product"
DETAIL: Key (product_upc)=(852896336240) is still referenced from table "my_app_product"
そして、この時点で私は完全に失われたとh ***は、テーブル「my_app_product」は何か混乱してしまった - それが存在する理由? 私は自分のPostgreSQLに行き、このテーブルが実際に存在することを知りました。 どのように動作するのか、この状況でレコードを削除する方法を理解したいと思います。 ohhともう少し詳細 - 私はdjangoの管理者経由で私のレコードを削除しようとすると、私は何の問題もなくそれを行うことができます。
種類ヘルパーに感謝します。ここで
Djangoは[here](https://docs.djangoproject.com/ja/1.10/topics/db/models/#multi-table-inheritance)に記載されているように、2つのモデル間に暗黙の 'OneToOneField'を作成しました。 。 PostgreSQLの 'Product'モデルとそれに対応するテーブルを削除しなければならないと思います。 – albar