python - 在 Django 中添加多对多

标签 python django

我有一个网络服务,我想将 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/

相关文章:

python - 内置 python 函数的时间/空间复杂度

python - 将 SQL 语句存储在属性文件中以供 Python 脚本使用?

python - 如何确保报告管道中的错误

python - ffmpeg 在 python 中使用 libardrone

django - 如何从模型返回错误信息?

python - 2个隐藏层的反向传播和正向传播

python - 哪种技术更适合构建基于 Web 的 GUI 客户端?

django - 在带有 Postgresql 9.6 的 Django 中如何排序不区分大小写和重音?

django - 你能用 Django 构建一个 Chrome 扩展吗?

python - Django 表单集中的只读字段