2015-12-02 91 views
0

我需要一些帮助。 我需要将TabularInline添加到我的管理界面,因为我必须插入具有至少100个元素的元素周期表。将TabularInline添加到我的管理界面

我有型号:

class ElementsTable(models.Model): 
    sign = models.CharField(max_length=3,null=False) 
    name = models.CharField(max_length=20,null=False) 

class ListMaterials(models.Model): 
    materials = models.CharField(max_length=30,null=False) 
    ElementsTable = models.ManyToManyField('ElementsTable') 

而且在管理:

from django.contrib import admin 
from italgraniti.models import * 

class ElementsInline(admin.TabularInline): 
    model = ElementsTable 
    extra = 3 

class ElementsTableAdmin(admin.ModelAdmin): 
    list_display = ('sign', 'name') 
    inlines = [ElementsInline] 

class AnalisysAdmin(admin.ModelAdmin): 
    list_display = ('id','nprova') 

class ListMaterialsAdmin(admin.ModelAdmin): 
    list_display = ('materials',) 

admin.site.register(Analisys, AnalisysAdmin) 
admin.site.register(ElementsTable, ElementsTableAdmin) 
admin.site.register(ListMaterials, ListMaterialsAdmin) 

但它返回:

SystemCheckError: System check identified some issues: 

ERRORS: 
<class 'italgraniti.admin.ElementsTable'>: (admin.E202) 'italgraniti.ElementsTable' has no ForeignKey to 'italgraniti.ElementsTable'. 

我会插入近10元组(标志,名称)一次..

(django 1.8,蟒蛇3.5) 编辑:插入整个管理

编辑:我很抱歉,但我做了一些错误的英文admin.py和model.py到平移,。我现在纠正他们。我理解你的解决方案,但无论如何造成

<class 'italgraniti.admin.ElementsTabel'>: (admin.E202) 'italgraniti.ElementsTabel' has no ForeignKey to 'italgraniti.ListMaterials'. 
+1

发表您的整个admin.py,可能是一个问题再往下做 – Hybrid

+0

,编辑初始后。 – Simone

回答

0

好像你不小心把你的ElementsTable模型的报价。

尝试改变:

ElementsTable = models.ManyToManyField('ElementsTable')

elements_table = models.ManyToManyField(ElementsTable, related_name='elencomaterialiAsElementsTable')


编辑:

它看起来像你的主要问题是,你正在尝试将ElementsTable内联到本身,这是不可能的。关键是你应该能够在ElencoMateriali管理页面看到它。我已经清理了代码,并在这里添加的功能:

from django.contrib import admin 
from italgraniti.models import Analisys, ElementsTable, ListMaterials, ElencoMateriali 

class ElementsTableInline(admin.TabularInline): 
    model = ElementsTable 
    extra = 3 

class ElencoMaterialiAdmin(admin.ModelAdmin): 
    list_display = ('materials',) 
    inlines = [ElementsTableInline] 

class ElementsTableAdmin(admin.ModelAdmin): 
    list_display = ('sign', 'name') 

class AnalisiAdmin(admin.ModelAdmin): 
    list_display = ('id', 'nprova') 

class ListMaterialsAdmin(admin.ModelAdmin): 
    list_display = ('materials',) 

admin.site.register(Analisys, AnalisysAdmin) 
admin.site.register(ElementsTable, ElementsTableAdmin) 
admin.site.register(ElencoMateriali, ElencoMaterialiAdmin) 
admin.site.register(ListMaterials, ListMaterialsAdmin) 
+0

和管理员是一样的吗?我尝试过,但不工作.. – Simone

+0

我刚刚更改了管理员,所以试试看,让我知道它是否适合你。 – Hybrid