Django Forms: Обновление базы данных вместо создания новой записи Вопрос
Здравствуйте, мой вопрос достаточно прост, как мне кажется. У меня есть форма, которая в настоящее время позволяет мне выбрать хост из выпадающего меню, а затем выбрать команды для выдачи этому хосту. Они привязаны к полю под названием current-commands.
Которые я могу затем отправить, но вместо того, чтобы редактировать существующие командные узлы (сами привязанные к маякам), он вместо этого создает новый командный узел, например, новый хост и новую команду. Не обновляя текущую команду/команды выбранных хостов.
Это проблема, и она в некоторой степени связана с другим вопросом, который у меня есть и о котором я напишу. В идеале я хочу, чтобы клиентская система подключалась, проверяла текущие команды (чтобы она знала, что делать), затем сдвигала текущие команды на предыдущие (чтобы я мог видеть предыдущие команды, которые были получены и выполнены). Таким образом, возникает вопрос о многозначных полях, а не о полях с одним элементом. Однако, поскольку это отдельные вопросы, у меня есть отдельный вопрос для этого. Но мне нужно иметь возможность изменять командные узлы, спасибо.
Любая и любая помощь приветствуется. До сих пор все, кто помогал мне с этими проблемами, были великолепны. Так что спасибо за любую помощь, которую вы можете предложить.
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import beacon
from .models import command_node
from .forms import Command_Form
from django.http import HttpResponseRedirect
def home(request):
form = Command_Form()
if request.method == "POST":
form = Command_Form(request.POST)
if form.is_valid():
form.save()
return render(request, 'home.html', {"form": form})
return render(request, 'home.html', {"form": form},)
models.py
from tkinter import CASCADE
from turtle import update
from django.db import models
class beacon(models.Model):
host_id = models.BigAutoField('Id', primary_key=True)
hostname = models.CharField('Hostname', max_length=200)
internalIp = models.CharField('Internal-IP', max_length=200)
externalIp = models.CharField('External-IP', max_length=200)
current_user = models.CharField('Current_User', max_length=200)
os = models.CharField('OS', max_length=200)
admin = models.CharField('Admin', max_length=200)
def __str__(self):
return self.hostname
CHOICES = [
('Sleep', "Sleep"),
('Open SSH_Tunnel', 'Open SSH_Tunnel'),
('Close SSH_Tunnel', 'Close SSH_Tunnel'),
('Open TCP_Tunnel', 'Open TCP_Tunnel'),
('Close TCP_Tunnel', 'Close TCP_Tunnel'),
('Open Dynamic', 'Open Dynamic'),
('Close Dynamic', 'Close Dynamic'),
('Task', 'Task'),
]
class command_node(models.Model):
host_id = models.ForeignKey(beacon, on_delete=models.CASCADE)
current_commands = models.CharField(choices=CHOICES, max_length=50, null=True)
previous_commands = models.CharField('previous_commands', max_length=2000, null=True)
def __str__(self):
return str(self.host_id)