[英]How to make django admin site to not recognize a foreign key'ed model (on different app) to be a model of current app?
我有三個模型-其中兩個在一個應用程序中,第三個在另一個應用程序中。 結構是這樣的:
taapp.models:
class Teachers(model.Model):
fullname = models.CharField(max_length=50)
...
class TeachersScale(model.Model):
teacher = models.ForeignKey("Teachers")
abbr = models.ForeignKey("questions.QuestionTypes")
questions.models:
class QuestionTypes(models.Model):
abbr = models.CharField(max_length=5)
......
我將所有這些模型注冊為管理員:
taapp.admin:
from taapp.models import Teachers
from taapp.models import TeachersScale
from django.contrib import admin
from admin_forms import TeachersAdmin, TeachersScaleAdmin
admin.site.register(Teachers, TeachersAdmin)
admin.site.register(TeachersScale, TeachersScaleAdmin)
taapp.admin_forms:
from django import forms
from django.contrib import admin
class TeachersAdmin(admin.ModelAdmin):
list_display = ('fullname', 'email', 'registration_date')
class TeachersScaleAdmin(admin.ModelAdmin):
list_display = ('teacher', 'abbr')
list_filter = ['teacher','abbr']
當我嘗試向管理站點中的TeachersScale
添加字段時,出現以下錯誤:
DatabaseError at /admin/taapp/teachersscale/add/
(1146, "Table 'taapp.questions_questiontypes' doesn't exist")
它處理QuestionTypes
,因為它是taapp
的模型。 怎么解決呢? 還是我的數據庫設計有問題?
我嘗試了TabularInline
for QuestionTypes
來查看反向添加是否有效。 好吧,它的工作原理是:
Questions.admin:
class TeachersScaleInline(admin.TabularInline):
model = TeachersScale
class QuestionTypesAdmin(admin.ModelAdmin):
inlines = [TeachersScaleInline]
提前致謝。
看起來您實際上尚未創建問題表,或者如果您已將其強制放入其他數據庫中。 外鍵希望共享同一數據庫,並且讓多個應用程序共享同一數據庫是完全標准的。 因此,應用程序名稱是自動生成的表名稱的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.