我有两个django模型:
class Question(models.Model):
question = models.CharField(max_length=100)
# some other not important to my question fields
class Field(models.Model):
question = models.ForeignKey(Question)
order = models.PositiveSmallIntegerField(default=1)
order
类上的 Field
字段应该告诉我Question
字段的显示顺序。如何让问题自动增加?例如,我打开django admin,添加一个问题,为一个问题添加一个字段,当我想为同一个问题添加另一个字段时,我希望看到该字段增加1,因为我已经有了订单号为1的字段。有没有办法实现(自动增量)?我确实意识到如果我想稍后改变订单,那可能是非常乏味的任务。也许我有这个问题有更好的解决方案(手动指定DB中带有整数字段的条目的顺序)而不是DB中的列?
答案 0 :(得分:0)
您可以使用AutoField
自动增加字段,与id字段相同。
class Field(models.Model):
question = models.ForeignKey(Question)
order = models.AutoField(primary_key=False)
或者您可以通过覆盖保存方法自行完成:
from django.db.models import F
class Field(models.Model):
...
def save(self, *args, **kwargs):
if not self.order:
# Using F object is important
self.order = F('order') + 1
return super(Field, self).save(*args, **kwargs)