Django:保存后ID为空

时间:2017-07-04 19:30:46

标签: python django django-forms

我在models.py中找到了这个模型:

class Boats(models.Model):
    id = models.BigIntegerField(primary_key=True)
    created = models.DateTimeField(default=timezone.now, blank=True)
    name = models.CharField(max_length=30)

    class Meta:
       managed = True
       db_table = 'boats'
       ordering = ['name']

class Clients(models.Model):
    id = models.BigIntegerField(primary_key=True)
    created = models.DateTimeField(default=timezone.now, blank=True)
    code = models.CharField(max_length=100)

    class Meta:
       managed = True
       db_table = 'clients'
       ordering = ['name']

==========================

在views.py中;我的功能是这样的:

  f = NewBoatForm(request.POST)
  if f.is_valid():
        nBoat = f.save()
        print 'ID:'+str(nBoat.id)
        cBoat = ClientsBoats()
        cBoat.client = client
        cBoat.boat = nBoat
        cBoat.save()

但是django失败了这个错误:

       ValueError: save() prohibited to prevent data loss due to unsaved related object 'boat'.

我打印了ID,但它是空的。 someOne可以帮助我。

1 个答案:

答案 0 :(得分:7)

您已将主键字段id重写为AutoField以外的其他字段。不要那样做。

通常你根本不会定义它,让Django自动完成它。如果你真的确定标准整数字段不够大,可以使用BigAutoField。但我怀疑你的数据库中有超过2147483647条船。