我有一个简单的问题模型:
class Question(Polymorph):
text = models.CharField(max_length=256)
poll = models.ForeignKey(Poll)
index = models.IntegerField()
我想用ID值预先填充索引字段(保存时)。当然在保存之前我没有ID值(它是在它之后创建的),所以我想知道最简单的方法是什么?有什么想法吗?在
我考虑了django signal,但之后必须调用save()方法两次。在
Tags:
不管你怎么做,你都得打两次电话给save。当插入新行时,ID是由数据库服务器直接生成的(我相信sqlite除外),所以在任何情况下都需要这样做。在
不过,我会问您是否真的需要在
index
字段中输入ID值。毕竟,它总是以obj.id
的形式提供,因此即使您希望它作为较长值的一部分,您也可以始终通过属性动态地计算它。在是的,想从某个地方找出下一个身份证是不方便携带的。比使用信号更简单的方法是在save方法中添加以下内容:
如果不能从作为过滤器输入的字符串中完全派生出对象的id,我想您必须这样做。但是,如果字符串中“something-{id}-something else”,最好去掉索引字段,使用regexp从字符串中提取id值,然后直接使用问题.对象.过滤器(id=id)
避免双重提交的一种方法是使用自增主键之外的其他方法。Django并不真正关心主键是什么,只要有一个,它要么是字符串,要么是整数。您可以使用类似guid的东西,可以在初始化模型时在模型中动态生成guid,也可以让数据库在您不关心它是什么时为您设置guid(假设您的数据库支持guid)。在
相关问题 更多 >
编程相关推荐