将数字字段添加到Django模型

时间:2018-05-22 15:57:18

标签: python django

我有一个django电影模型

class Film(models.Model):

    title = models.CharField(max_length=200)
    movie_id = models.CharField(max_length=8, unique=True, primary_key=True)
    director = models.ForeignKey('Director', on_delete=models.SET_NULL, null=True)
    year = models.IntegerField(null=True)
    genres = models.ManyToManyField(Genre)

我需要使用movie_id作为主键,但我还需要一个字段,表示表格中项目行的数量。 它必须自动增加,就像标准" id"领域。 我该如何添加它?

此问题https://stackoverflow.com/users/3404040/take-care类似,但我无法使用我的"数字"字段作为主键,因为movie_id已经用于此。

2 个答案:

答案 0 :(得分:2)

您可以使用类似的内容,但如果您不想使用默认的id字段,则可能会消耗资源。

class Film(models.Model):
    def number():
        no = Film.objects.count()
        return no + 1

    movie_row = models.IntegerField(unique=True,default=number)

答案 1 :(得分:0)

来自Django's Documentation

  

默认情况下,Django为每个模型提供以下字段:

     

id = models.AutoField(primary_key=True)

     

这是一个自动递增的主键。

     

如果您想指定自定义主键,只需在其中一个字段中指定primary_key = True即可。如果Django看到你明确设置了Field.primary_key,它就不会添加自动id列。

     

每个模型只需要一个字段即可使primary_key = True(显式声明或自动添加)。

如果您希望明确地将其称为movie_id,则可能需要以下内容:

class Film(models.Model):
    movie_id = models.AutoField(primary_key=True)