0

SQLite データベースのテーブルに保存しようとすると、次のエラーが発生します。

外部キーの不一致 - 「filename_tbl」を参照する「procedure_tbl」

models.py では、エラーが参照しているテーブルは次のとおりです。

class FilenameTbl(models.Model):
    rowid = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='FileID', db_column='rowid')
    filename = models.TextField(blank=True, null=True)
    creation_datetime = models.TextField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'filename_tbl'
        ordering = ['rowid']


class ProcedureTbl(models.Model):
    rowid = models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ProcedureID', db_column='rowid')
    ...
    filename_id = models.ForeignKey(FilenameTbl,db_column='filename_id', to_field='rowid',null=True,blank=True,on_delete=models.SET_NULL)

    class Meta:
        managed = False
        db_table = 'procedure_tbl'
        ordering = ['rowid']

次のようなテーブルとクエリセットからデータを読み取ることができ、正しいデータが返されます。

    queryset = FilenameTbl.objects.values(
        'rowid', 'filename',
        'proceduretbl__rowid')

ProcedureTbl テーブル関数に適切に書き込み/更新する生の SQLite コマンド。

ProcedureTbl から filename_id を削除すると、データをテーブルに保存できます。

    queryset = ProcedureTbl.objects.get(procedure_number=10)
    queryset.reviewer_comments='can save this'
    queryset.save()
4

1 に答える 1