#django #django-rest-framework
Вопрос:
У меня есть следующая страница:
На этой странице выполняется следующее: редактируйте данные, вводя новые данные, предоставленные пользователем, а также таблицу, в которой зарегистрирован интерфейс, и каждый интерфейс имеет свой собственный флажок. В случае, если пользователь хочет удалить определенный интерфейс, пользователь может установить флажок и нажать кнопку сохранить, чтобы код внес изменения. Мне было интересно, возможно ли в рамках Django API что-то подобное? Я уже создал представление API для редактирования части, в которой пользователь может вводить новые данные для обновления существующих данных, но мне было интересно, можно ли выполнить удаление в рамках API ? Если можно, то как это делается?
Ниже приведены мои коды :
models.py
class DeviceDetail(models.Model):
SUBNET_CHOICES = (
('16','16'),
('17', '17'),
('18','18'),
('19','19'),
('20','20'),
('21', '21'),
('22', '22'),
('23', '23'),
('24', '24'),
('25', '25'),
('26', '26'),
('27', '27'),
('28', '28'),
('29', '29'),
('30', '30'),
)
DEV_MODS =(
('Catalyst 9606R', 'Catalyst 9606R'),
('C9300L-48T-4X', 'C9300L-48T-4X')
)
mgt_interface = models.CharField(max_length=50)
subnetmask = models.CharField(max_length=2, choices = SUBNET_CHOICES)
ssh_id = models.CharField(max_length=50)
ssh_pwd = models.CharField(max_length=50)
enable_secret = models.CharField(max_length=50)
dev_mod=models.CharField(max_length=50, choices = DEV_MODS) ##device_model replacement
DD2DKEY = models.ForeignKey(Device, on_delete=models.CASCADE) ##The key to link up the tables
def __str__(self):
return self.hostname
serializers.py
class DeviceDetailSerializers(serializers.ModelSerializer):
class Meta:
model = DeviceDetail
fields = ['mgt_interface', 'subnetmask', 'ssh_id', 'ssh_pwd', 'enable_secret', 'dev_mod']
views.py
@api_view(['PUT'])
def update_device(request, pk=None):
if pk != None:
devicedetail = DeviceDetail.objects.get(DD2DKEY=pk)
devdserializer = DeviceDetailSerializers(devicedetail, data = request.data)
if devdserializer.is_valid():
devdserializer.save()
results = {
"device_details" : devdserializer.data,
}
return Response(results, status=status.HTTP_201_CREATED)
return Response(devdserializer.errors, status=status.HTTP_400_BAD_REQUEST)