[英]Error using Django model forms with multiple databases
我想用外鍵在我的應用程序中創建一個簡單的表單。 我有兩個數據庫,一個是 Django 的默認數據庫,另一個是遺留數據庫。
顯示的錯誤消息是: Table 'django.customer' does not exist 。 但我想選擇我的其他數據庫,而不是 Django。 我怎么做?
這是我的模型:
from django.db import models
from register.models import Customer
class Service(models.Model):
# ..
customer = models.ForeignKey('register.Customer', db_column='customer')
# ..
這是其他應用程序中的其他模型。
class Customer(models.Model):
codigo = models.AutoField(primary_key=True)
這兩個應用程序都在其他數據庫中,而不是在 Django 中。
我的設置.py:
DATABASES = {
'default': {
'NAME': 'django',
'ENGINE': 'django.db.backends.mysql',
'USER': 'my-user',
'PASSWORD': 'my-password',
'HOST': '',
'PORT': ''
},
'other-database': {
'NAME': 'other-database',
'ENGINE': 'django.db.backends.mysql',
'USER': 'my-user',
'PASSWORD': 'my-password',
'HOST': '',
'PORT': ''
}
}
在 HTML 中,我把這個:
{{ form_service }}
這是我的 forms.py
from attendance.models import Service
from register.models import Customer
from django.http import HttpResponseRedirect, HttpResponse
from django.core.exceptions import ValidationError
class FormService(ModelForm):
class Meta:
model = Service
fields = ('my_fields', 'my_fields', 'customer')
這是我的 views.py
def service(request):
form_service = FormService()
return render(request, 'service.html', {'form_service': form_service})
我認為錯誤就在這里。 也許我必須定義我的其他數據庫,它應該在 Django 數據庫中選擇。
我試過這個,但沒有奏效。
def service(request):
queryset = Customer.objects.using('other-database').all()
form_service = FormService(instance = queryset)
return render(request, 'service.html', {'form_service': form_service})
您的代碼instance = queryset
沒有意義,因為instance
應該是表單的 Service 實例,而不是 Customer 實例的查詢集。
嘗試在表單的__init__
方法中設置字段的查詢集。
class FormService(ModelForm):
def __init__(self, *args, **kwargs):
super(FormService, self).__init__(*args, **kwargs)
self.fields['customer'].queryset = Customer.objects.using('other-database').all()
class Meta:
model = Service
fields = ('my_fields', 'my_fields', 'customer')
如果這不起作用,請更新您的問題並發布完整的回溯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.