使用primary_key和默认pk的Django AutoField

时间:2014-08-08 13:57:52

标签: django django-models

我对Django数据库模型pk感到好奇。

这是否有任何区别

class Category(models.Model):
    category_id = models.AutoField(primary_key=True)
    category_name = models.CharField(max_length=50)

之间的这个?

class Category(models.Model):
   category_name = models.CharField(max_length=50)

相同的内容AutoField with primary_keydefault pk

1 个答案:

答案 0 :(得分:11)

是的,区别在于,主键数据库中的列名是category_id,第二种情况是id

您可以使第二个示例模拟第一个示例的方法是:

class Category(models.Model):
   category_name = models.CharField(max_length=50)

   @property
   def category_id(self):
       return self.id

来自documentation

  

AutoField

     

IntegerField,根据可用ID自动递增。您通常不需要直接使用它;如果您没有另外指定

,主键字段将自动添加到您的模型中