- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我试图弄清楚如何布置我的两个 Django 模型,以便在将新模型保存到数据库时,它的主键会递增,使其成为所有具有相同记录的下一个最高值外键。
很像 this question asked ,但我想知道你将如何在 Django 中做到这一点。以下是演示类似情况的问题的摘录:
id | job_id | title
0 1 hi
1 1 hello
2 1 goodbye
0 2 hi
1 2 hello
我知道you can't have multiple primary keys in a Django model你可以使用unique_together ,但文档说它在 CREATE
语句中使用等效的 UNIQUE
语句。会
class ModelA(models.Model):
key = models.PositiveIntegerField(primary_key = True)
fk = models.ForeignKey(ModelB)
def Meta(self):
unique_together = ("key", "fk")
在模型中使用 this answer完成我正在寻找的东西?模型之间的关系是一个ModelA
有多个ModelB
,而每个ModelB
只有一个ModelA
。
最佳答案
您必须对模型进行一些更改(如果可能)。所以,ModelA
应该看起来像这样
class ModelA(models.Model):
key = models.PositiveIntegerField()
fk = models.ForeignKey(ModelB)
def Meta(self):
unique_together = ("key", "fk")
def save(self, *args, **kwargs):
key = cal_key(self.fk)
self.key = key
super(ModelA, self).save(*args, **kwargs)
如您所见,我覆盖了默认值 save
method 在以 fk
为参数的 cal_key
函数中计算键值。因此,在模型文件中定义 cal_key
函数。
def cal_key(fk):
present_keys = ModelA.objects.filter(fk=fk).order_by('-key').values_list('key', flat=True)
if present_keys:
return present_keys[0]+1
else:
return 0
cal_key
函数清楚地表明了您的实际需要。
关于python - Django模型基于外键自增主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8950010/
1、修改数据 复制代码代码如下: DataRow dr =
数据库操纵基本流程为: 1、连接数据库服务器 2、选择数据库 3、执行SQL语句 4、处理结果集 5、打印操作信息 其中用到的相关函数有 •resource m
CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的缩写,它是普通应用程序的缩影。如果您掌握了某框架的CRUD编写,那么意味可以使用该框架创建普通应用程序了
项目结构: 添加页面: &
本文实例讲述了android操作sqlite数据库(增、删、改、查、分页等)及listview显示数据的方法。分享给大家供大家参考,具体如下: 由于刚接触android开发,故此想把学到的基础知识
我是一名优秀的程序员,十分优秀!