gpt4 book ai didi

python - 在 Django 中添加多对多

转载 作者:行者123 更新时间:2023-12-01 04:58:45 25 4
gpt4 key购买 nike

我有一个网络服务,我想将 rdp 配置文件添加到某个契约(Contract)号。

View .py

from django.shortcuts import render
from program.models import contract,rdp
from django.contrib.auth.decorators import login_required

@login_required(login_url='login')
def add_rdp(request):
if request.method == "POST":

get_rdp = (request.POST.get('rdp', ''))
get_number = (request.POST.get('contract_number',''))

new_rdp = rdp(config = get_rdp).save()

for new_contract in contract.objects.filter(number = get_number):
new_rdp.contract.add(new_contract)

return render(request, 'add_rdp.html')

模型.py

class contract(models.Model):
server = models.ForeignKey(server)
number = models.CharField(unique = True, max_length = 64)

class rdp(models.Model):
contract = models.ForeignKey(contract)
config = models.TextField()

这是我得到的错误:

Integrity Error
(1048, "Column 'contract_id' cannot be null")

由于这种方法在 Django 的另一个 web 应用程序中对我有用,所以我不明白为什么它不起作用。

最佳答案

您必须获取模型实例,然后将其添加到“new_rdp”中。你可以这样做:

@login_required(login_url='login')
def add_rdp(request):
if request.method == "POST":

get_rdp = (request.POST.get('rdp', ''))
get_number = (request.POST.get('contract_number',''))

for new_contract in contract.objects.all():
if new_contract.number == get_number:
new_rdp = rdp(config = get_rdp, contract = new_contract).save()

return render(request, 'add_rdp.html')

关于python - 在 Django 中添加多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26782867/

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