gpt4 book ai didi

python - 如何将外键实例添加到它指向的模型实例

转载 作者:行者123 更新时间:2023-11-29 08:28:46 27 4
gpt4 key购买 nike

我有一个 Django 应用程序,用户可以安排命令行“作业”在远程系统上运行。这是我定义 Job 和外键关系的 models.py

class Job(models.Model):
name = models.CharField(max_length = 250, null = False, blank = False)
user = models.CharField(max_length = 30, null = False, blank = False)
command = models.CharField(max_length = 1000, null = False, blank = False)
whenToRun = models.DateTimeField('Run Date', null = False, blank = False)
output = models.CharField(max_length = 100000, null = True, blank = True)

class Host(models.Model):
job = models.ForeignKey(Job)
name = models.CharField(max_length = 100, null = False, blank = False)
hasRun = models.BooleanField(default = False)

接下来,我有一个代码块,其中包含一些 POST 数据,指示要添加到作业的一些主机(主机代表用户想要运行主机实例所连接到的作业实例中指定的命令的各个主机名) )。

hostNames = list()
for p in request.POST:
if "Host" in p: #Host is put in the input name attribute in the template as a sentinel
hostNames.append(request.POST[p])
selected = getCheckedJobs() #a list of the jobs to add this host to

现在我已经组合了名称和要添加它们的作业,我意识到我不知道如何获取作业实例并添加与其关联的主机实例。谁能告诉我该怎么做?预先感谢您的帮助。

最佳答案

您确定您的关系结构正确吗?通过主机上的外键,每个作业可以有多个主机,但每个主机只能有一个作业。您的评论说“要将此主机添加到的作业列表” - 这种关系是不可能的。

如果正确 - 您需要获取 Host 实例,然后将其 job 属性分配为 Job 实例并保存 Host 实例。像这样的东西:

# assume selected_job is the job instance
try:
host = Host.objects.get(name=hostname)
except ObjectDoesNotExist:
# do something here to handle an unmatched hostname
pass
host.job = selected_job
host.save()

关于python - 如何将外键实例添加到它指向的模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17242409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com