Как добавить два автогенерируемых поля в одну модель в Django
Мне нужно создать два автогенерируемых поля: 1-е поле - ID, а другое - позиция, которая эквивалентна id или, можно сказать, это тоже автогенерируемое поле в модели.
вот код, в который я интегрирую:
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)
# schedule_id = models.ForeignKey(ScheduleClassificationGroup, on_delete=models.CASCADE, null=True, default=None)
usb_storage_device = models.CharField(max_length=10, default="allow")
cd_dvd = models.CharField(max_length=10, default="allow")
portable = models.CharField(max_length=10, default="allow")
wifi = models.CharField(max_length=10, default="allow")
bluetooth = models.CharField(max_length=10, default="allow")
webcam = models.CharField(max_length=10, default="allow")
serial_port = models.CharField(max_length=10, default="allow")
usb_port = models.CharField(max_length=10, default="allow")
local_printer = models.CharField(max_length=10, default="allow")
network_share = models.CharField(max_length=10, default="allow")
card_reader = models.CharField(max_length=10, default="allow")
unknown_device = models.CharField(max_length=10, default="allow")
position = model.[what do i write here to make it auto generated or equal to id]
def __str__(self):
return self.name
пожалуйста, помогите мне решить эту проблему.
Определите метод save
для установки начального значения 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)
# schedule_id = models.ForeignKey(ScheduleClassificationGroup, on_delete=models.CASCADE, null=True, default=None)
usb_storage_device = models.CharField(max_length=10, default="allow")
cd_dvd = models.CharField(max_length=10, default="allow")
portable = models.CharField(max_length=10, default="allow")
wifi = models.CharField(max_length=10, default="allow")
bluetooth = models.CharField(max_length=10, default="allow")
webcam = models.CharField(max_length=10, default="allow")
serial_port = models.CharField(max_length=10, default="allow")
usb_port = models.CharField(max_length=10, default="allow")
local_printer = models.CharField(max_length=10, default="allow")
network_share = models.CharField(max_length=10, default="allow")
card_reader = models.CharField(max_length=10, default="allow")
unknown_device = models.CharField(max_length=10, default="allow")
position = models.IntegerField()
def __str__(self):
return self.name
def save(self, *args, **kwargs):
if self._state.adding:
self.position = self.id
super().save(*args, **kwargs)