我对编程很陌生,但是遇到了一个问题,在任何地方都找不到答案;可能是因为我不知道如何很好地描述问题。
我已经建立了一些模型:用户,客户和合同。代码:
models.py:
class CustomerInfo(models.Model):
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
customer_name = models.CharField(max_length=30, blank=False, null=False)
def __str__(self):
return self.customer_name
class ContractInfo(models.Model):
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
customer = models.ForeignKey(CustomerInfo, null=True, on_delete=models.SET_NULL)
contract_nr = models.CharField(max_length=20, blank=False, null=False)
contract_active = models.BooleanField(default=True)
contract_start = models.DateField(blank=False, null=False)
contract_end = models.DateField(blank=False, null=False)
def __str__(self):
return self.contract_nr
views.py:
def addcontract(request):
addcontract = AddContractForm()
if request.method == "POST":
form = AddContractForm(request.POST)
if form.is_valid():
contr = form.save(commit=False)
contr.user = request.user
contr.save()
return HttpResponseRedirect(reverse('Manager:contracts'))
else:
form = AddContractForm()
else:
form = AddContractForm()
return render(request,'manager/addcontract.html',{'addcontract':addcontract})
forms.py:
class AddContractForm(forms.ModelForm):
class Meta():
model = ContractInfo
exclude = ('user', 'customer',)
fields = ('contract_nr', 'contract_active', 'contract_start', 'contract_end',)
现在,我将其设置为人们可以注册和登录。注册时,他们创建了一个公司(客户),在该公司工作。登录后,他们可以添加合同。他们只查看自己签订的合同,通过执行 contr.user = request.user 过滤用户ID的合同。但是,如果他们添加了合同,则合同将链接到用户,而不是(也)链接到他们所属的公司。 有没有一种方法可以自动填写他们注册时使用的客户名称/号码? Image of missing customername
我希望我的问题清楚,我将编辑问题(和标题)以使您的建议更加清楚。