В django я использую несколько баз данных, и имя одной из них - «virtual». Virtual не является базой данных по умолчанию
После отправки клиентской формы отображается следующая ошибка
Невозможно назначить «30001»: «FT_CLIENT_IP_DETAILS.iMasterID» должен быть экземпляром «CLIENT_MASTER».
Я думаю, что ошибка связана с внешними ключами. Здесь 30001 является внешним ключом в FT_CLIENT_IP_DETAILS
в models.py
class FT_CLIENT_ACCOUNTS_MASTER(models.Model):
iClientaccID = models.AutoField(primary_key=True)
class CLIENT_MASTER(models.Model):
iMasterID = models.AutoField(primary_key=True)
class FT_CLIENT_IP_DETAILS(models.Model):
iSno = models.AutoField(primary_key=True)
iMasterID = models.ForeignKey(CLIENT_MASTER,on_delete=models.CASCADE,
default='',db_column='iMasterID')
iClientAccID =models.ForeignKey(FT_CLIENT_ACCOUNTS_MASTER,
on_delete=models.CASCADE,default='',db_column='iClientAccID')
vcClientIP=models.CharField(max_length=16,default=0)
class Meta:
db_table='FT_CLIENT_IP_DETAILS'
в forms.py
class Clientipform(forms.ModelForm):
Masterchoice=[("","All")]
Accountchoice=[("","All")]
iMasterID=forms.ChoiceField(label="Master",choices=Masterchoice+[
(o.iMasterID, str(o.vcClientName)) for o in
CLIENT_MASTER.objects.using('virtual').all()],error_messages=
{'required': 'Master is required' })
iClientAccID=forms.ChoiceField(label="Account",choices=Masterchoice+[
(o.iClientaccID, str(o.vcSystemID)) for o in
FT_CLIENT_ACCOUNTS_MASTER.objects.using('virtual').all()],
error_messages={'required': 'Account is required' })
vcClientIP=forms.CharField(label="IP(s)",widget=forms.Textarea,
error_messages={'required': 'Account is required' })
class Meta:
model=FT_CLIENT_IP_DETAILS
fields = ['iMasterID','iClientAccID','vcClientIP']
в views.py
class AddIP(CreateView):
template_name = 'clientip/client_ip_dropdown.html'
form_class = Clientipform
def form_valid(self,form):
model = form.save(commit=False)
model.save(using='virtual')
return HttpResponseRedirect(reverse('clientip:home'))
success_url = reverse('clientip:home')