加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

用户对问题“使用遗留数据库的Django

发布时间:2022-10-18 21:31:11 所属栏目:MySql教程 来源:网络
导读: 给定一个使用以下SQL查询创建的数据库表:
CREATE TABLE Bill
(
Time DATE NOT NULL ,
Address VARCHAR2 (60) NOT NULL ,
ID NUMBER NOT NULL
) ;
ALTER TABLE

给定一个使用以下SQL查询创建的数据库表:

CREATE TABLE Bill
  (
    Time DATE NOT NULL ,
    Address VARCHAR2 (60) NOT NULL ,
    ID           NUMBER NOT NULL
  ) ;
ALTER TABLE Bill ADD CONSTRAINT Bill_PK PRIMARY KEY ( ID ) ;
CREATE SEQUENCE Bill_ID_SEQ START WITH 1 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Bill_ID_TRG BEFORE
  INSERT ON Paragony FOR EACH ROW BEGIN :NEW.ID := Bill_ID_SEQ.NEXTVAL;
END;

复制

我必须在Django ORM中使用它,所以我运行了inspectdb命令。这是自动生成的代码:

class Bill(models.Model):
    time = models.DateField()
    address = models.CharField(max_length=60)
    id = models.IntegerField(primary_key=True)
    class Meta:
        managed = False
        db_table = 'bill'

复制

将其保存到应用程序的models.py文件并运行迁移后,一切正常。我可以像使用ORM创建数据库一样阅读数据库。但是,在Bill表中创建行时出现了一个问题。

它是Bill模型的简单形式:

class BillForm(ModelForm):
    class Meta:
        model = Bill
        fields = ('time', 'address')

复制

问题是我不能检索使用DB序列生成的ID。将id字段添加到表单将不起作用,因为我们必须使用代码生成它MySQL 序列使用,然后作为参数传递。甚至比数据库将创建不同的ID,如果没有原始查询,将无法检索。

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!