I am in need to create two auto-generated fields: 1st field is ID and I am taking the position that is equivalent to id or we can say it is also an auto-generated field in the model.
here is the code which I am integrating:
class DeviceControl(models.Model): vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE) id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) description = models.CharField(max_length=1000) position = model.[what do I write here to make it auto generated or equal to id] def __str__(self): return self.name
please help me to solve this.
Advertisement
Answer
You can override the save
method to set the initial value of position
:
class DeviceControlPolicy(models.Model): vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE) id = models.AutoField(primary_key=True) name = models.CharField(max_length=100) description = models.CharField(max_length=1000) position = models.IntegerField(blank=True, null=True) def __str__(self): return self.name def save(self, *args, **kwargs): super().save(*args, **kwargs) if self.position == None: self.position = self.id # You need to call save two times since the id value is not accessible at creation super().save()