在Django中使用内联线获取SystemCheckError,无法识别sou

2024-06-07 00:07:05 发布

您现在位置:Python中文网/ 问答频道 /正文

就我的一生而言,我找不到解决这个问题的方法,我真的不知道内联线到底做错了什么。你知道吗

我使用的是django 1.8和django嵌套内联0.3.4。你知道吗

这是报告的内容型号.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

这是我的书的内容管理员.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)

再说一次,为了把这件事做好,我已经伤了自己一段时间了,任何帮助都是非常感谢的。你知道吗

谢谢,祝你今天愉快。你知道吗


Tags: selfmodelreturnadminmodelsdefsitede
1条回答
网友
1楼 · 发布于 2024-06-07 00:07:05

尝试为fk_name使用字符串:

fk_name = 'linea'

另外,我建议您使用Django约定,将模型命名为SensorAsignadoLinea,而不是sensor_asignadolinea。它将使其他Django用户更容易理解您的代码。你知道吗

相关问题 更多 >