对于我的生活,我找不到解决这个问题的方法,我真的不知道我对内联的错误。
我正在使用django 1.8以及django-nested-inline 0.3.4。
这是models.py文件的内容:
import datetime
from django.db import models
from django.db.models.fields import CharField, TextField, IntegerField
from django.utils import timezone
# lectura de sensor, no incluye datos, solo fecha y datos apuntan aquí
# también apunta a la pieza y el sensor asignado
class lectura(models.Model):
lectura_nom = models.CharField(max_length = 20)
sensor_asign = models.ForeignKey('sensor_asignado')
pieza = models.ForeignKey('pieza')
verificacion = models.BooleanField()
fecha_hora = models.DateTimeField()
def __str__(self):
return self.lectura_nom
def lectura_de_hoy(self):
return self.fecha_hora >= timezone.now() - datetime.timedelta(days=1)
# pieza asignada al sensor, cambia de acuerdo a hroario de produccion
class pieza(models.Model):
pieza_nom = models.CharField(max_length = 20)
paquete =models.ForeignKey('paquete')
ultima = models.BooleanField()
no_de_seq = models.IntegerField()
description= models.TextField()
def __str__(self):
return self.pieza_nom
# paquetes incluyen puras piezas únicas al paquete
class paquete(models.Model):
paquete_nom = models.CharField(max_length = 20)
no_de_piezas = models.IntegerField()
no_de_medibles = models.IntegerField()
def __str__(self):
return self.paquete_nom
#lugar donde se encuentra el rack, importante para permisos de usuario
class area(models.Model):
area_nom = models.CharField(max_length = 20)
description = models.TextField()
def __str__(self):
return self.area_nom
# rack del cual fue sacada la pieza
class linea(models.Model):
linea_nom = models.CharField(max_length = 20)
area = models.ForeignKey('area')
description = models.TextField()
def __str__(self):
return self.linea_nom
# sensor del cual se sacó la lectura
class sensor_asignado(models.Model):
sensor_nom = models.CharField(max_length = 20)
linea = models.ForeignKey('linea')
sensor_tipo = models.ForeignKey('tipo_de_sensor')
def __str__(self):
return self.sensor_nom
# sensor puede incluir varias configuraciones de envio de datos
class tipo_de_sensor(models.Model):
tipo_de_sen_nom = models.CharField(max_length = 20)
descripcion=models.TextField()
def __str__(self):
return self.tipo_de_sen_nom
# diferentes datos para el sensor de tipo especificado anteriormente
# cada dato apunta hacia una lectura
class salidas_de_sensor(models.Model):
salida_nom = CharField(max_length = 20)
descripcion = models.TextField()
def __str__(self):
return self.salida_nom
class datos_o(models.Model):
dato_no = IntegerField(primary_key = True)
salida_de_sensor = models.ForeignKey('salidas_de_sensor')
lectura = models.ForeignKey('lectura')
def __str__(self):
r_string = str(self.dato_no)
return r_string
# advertencias, apunta a un tipo y una lectura
class adv(models.Model):
adv_no = IntegerField(primary_key=True)
lectura = models.ForeignKey('lectura')
adv_tipo = models.ForeignKey('adv_tipo')
def __str__(self):
adv_string = str(self.adv_no)
return adv_string
# diferentes tipo de advertencias posibles
class adv_tipo(models.Model):
adv_tip = CharField(max_length = 20)
descrip_adv = TextField()
def __str__(self):
return self.adv_tip
这是我的admin.py文件的内容:
from django.contrib import admin
from nested_inline.admin import NestedStackedInline, NestedModelAdmin
from mainscreen.models import *
class AreaInline(NestedStackedInline):
model = area
extra = 1
fk_name = area
class LineaInLine(NestedStackedInline):
model = linea
extra = 1
fk_name = linea
inlines = [AreaInline]
class SensorInLine(NestedModelAdmin):
model = sensor_asignado
inlines = [LineaInLine]
admin.site.register(lectura)
admin.site.register(sensor_asignado, SensorInLine)
admin.site.register(salidas_de_sensor)
admin.site.register(pieza)
admin.site.register(paquete)
admin.site.register(area)
admin.site.register(linea)
admin.site.register(tipo_de_sensor)
admin.site.register(adv)
admin.site.register(adv_tipo)
admin.site.register(datos_o)
这是我得到的错误:
Performing system checks...
SystemCheckError: System check identified some issues:
ERRORS:
<class 'mainscreen.admin.LineaInLine'>: (admin.E202) 'mainscreen.linea' has no field named '<class 'mainscreen.models.linea'>'.
System check identified 1 issue (0 silenced).
无论如何,如果有人能找到解决这个问题的方法,我会非常感激。
祝你有个美好的一天。
编辑:
好的,现在我完全有另一个问题,我认为这更像是一个设计问题。
我希望信息在管理员中显示的方式是:
when a new Sensor Asignado is created, have the option to choose from a drop downn menu in the following order of hierarchy:
Area
Linea (filtered by Area chosen)
Sensor (Filtered by Linea chosen)
再一次,我一直在努力试图让自己暂时保持正确,并且非常感谢任何帮助。
谢谢你,祝你有愉快的一天。
答案 0 :(得分:1)
尝试使用fk_name
的字符串:
fk_name = 'linea'
另外,我建议您使用Django约定,并将模型命名为SensorAsignado
和Linea
,而不是sensor_asignado
和linea
。它将使您的代码更容易理解其他Django用户。