我需要創建兩個自動生成的欄位:第一個欄位是 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
請幫我解決這個問題。
uj5u.com熱心網友回復:
您可以覆寫該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(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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/498319.html
標籤:Python django django模型 django-rest-framework
