【发布时间】:2015-10-07 14:52:32
【问题描述】:
我想在我的应用中使用外键创建一个简单的表单。我有两个数据库,一个是 Django 的默认数据库,另一个是旧数据库。
显示的错误消息如下:表 'django.customer' 不存在。但我想选择我的其他数据库,而不是 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})
【问题讨论】:
-
Django数据库是指settings.py文件中的默认数据库吗?您是否在settings.py文件中定义了您的第二个数据库? -
请更明确地说明您的问题名称,以便其他有您问题的人使用。
-
是的,我的 settings.py 已经定义了两个数据库。
标签: python django django-forms