我有一個web服務,我想將rdp配置文件添加到某個合同編號。在Django中添加ManyToMany
views.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')
models.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")
由於這種方法在其他Web應用程序在Django爲我工作,我無法弄清楚爲什麼這不起作用。
我認爲問題是,當你創建new_rdp實例時,你沒有爲它分配一個合同值,因爲它不能爲空。 – 2014-11-06 15:18:15
rdp有一個外鍵合同,而不是一個多對多的關係。你不能'.add()'這樣的事情。 – Kevin 2014-11-06 15:18:39