我有一个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已经用于此。
答案 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为每个模型提供以下字段:
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)