相关疑难解决方法(0)

使 Django 不插入某些字段

我有一个针对 postgresql 数据库表的 Django 模型,我希望 Django 在对象创建期间不要插入 field_3 作为 DB 应该填写的时间戳字段。

class AbcModel:
  model_id = models.AutoField(primary_key=True)
  field_1 = models.BigIntegerField()
  field_2 = models.TextField()
  field_3 = models.DateTimeField(blank=True, null=True)

  class Meta:
    managed = False
    db_table = 'abc_table'
Run Code Online (Sandbox Code Playgroud)

对应的表模式

abc_table

  • model_id 整数不为空默认
    nextval('command_running_command_id_seq'::regclass)
  • field_1 整数不为空
  • field_2 文本不为空
  • field_3 时间戳不带时区默认 now()

我试过的 - 我读到应该调用 Model.save(update_fields=[list of fields to be updated])。

class AbcModel(models.Model):
    def save(self, *args, **kwargs):
        u_fields = ['field_1', 'field_2']
        super(CommandRunning, self).save(update_fields=u_fields)
Run Code Online (Sandbox Code Playgroud)

但我得到一个例外

Cannot force an update in save() with no primary key.
Run Code Online (Sandbox Code Playgroud)

如果我在 update_fields …

postgresql django-models django-admin python-3.x django-1.9

1
推荐指数
1
解决办法
1007
查看次数