abh*_*Dad 5 django django-models
我有一个DB Schema,我从一些遗留代码继承而来.现在我们打算使用Django将表格反映到模型中.这意味着我不能使用django模型生成表.表模式如下所示: -
mysql> desc student_profile;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| joining_on | datetime | YES | | NULL | |
| brothername | varchar(45) | YES | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
现在我为这个模式创建的Django模型如下所示: -
class StudentProfile(models.Model):
id=models.IntegerField(primary_key=True)
joining_on=models.DateField()
brothername=models.CharField(max_length=45)
class Meta:
db_table="student_profile"
Run Code Online (Sandbox Code Playgroud)
当我在其中插入一行时,如下所示: -
StudentProfile.objects.insert(brothername="Bro")
Run Code Online (Sandbox Code Playgroud)
该行已正确插入.但我没有办法提取id字段.看来,由于此字段不是a AutoField
,django不会复制MySql自动生成的id.我该怎么做才能获得id
创建行的值?我检查了(https://code.djangoproject.com/ticket/8799#comment:1),这似乎是设计的.但我仍然需要一种方法来实现id
并将其反映在StudentProfile
模型中.我能做什么?
一种解决方案可以是覆盖默认值save()
并明确地提供id
到save()
模型中.但这是正确的方法吗?数据库(它是MySql)提供了一种生成id的方法,我必须能够利用这个事实,而不是必须通过应用程序维护一个运行的计数器.任何提示?
您可以id
完全跳过定义列,即:
class StudentProfile(models.Model):
# id=models.IntegerField(primary_key=True)
joining_on=models.DateField()
brothername=models.CharField(max_length=45)
class Meta:
db_table="student_profile"
Run Code Online (Sandbox Code Playgroud)
Django将创建或使用id
默认命名的自动增量列,该列与您的旧列相同.
如果列名称不同,则可以使用AutoField
具有不同名称的名称,例如:
my_id = models.AutoField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11715 次 |
最近记录: |