AttributeError (The 'NoneType' object has no 'name' attribute)

0

Here I have 2 tables the first one is for products and the 2nd one is for price, in the price table I call the product name but I get an error, please help

models.py

class Producto(models.Model):
    """Productos a la venta"""
    nombre   = models.CharField(max_length=128, unique = True)
    cantidad = models.IntegerField()
    imagen   = models.ImageField(upload_to = "Imagenes/Productos/")
    ventas   = models.IntegerField(default = 0)
    descripcion = models.CharField(max_length=128, null = True)
    proveedor = models.CharField(max_length=128, null = True)

    def get_nombre(self):
        return self.nombre

    def get_descripcion(self):
        return self.descripcion

    def get_proveedor(self):
        return self.proveedor

    def precio_obj(self):
        precios = self.precio_set.filter(fecha__lte = datetime.now);
        if(precios.count() > 0):
            return precios[0]
        else:
            return None

    def precio(self):
        p = self.precio_obj()
        if(p != None):
            return p.valor
        else:
            return 0.0

    def precio_str(self):
        return str(self.precio()).rstrip('0').rstrip('.')
    precio_str.short_description = 'Precio'

    def imagen_tag(self):
        if self.imagen:
            return '<img src="%s" width="64px" height="64px" />' % (self.imagen.url)
        else:
            return '(Sin imagen)'
    imagen_tag.short_description = 'Imagen'
    imagen_tag.allow_tags = True

    def __unicode__(self):
        return self.nombre

    class Meta:
        ordering = ['-ventas']

class Precio(models.Model):
    """Precio de un producto en un determinado momento"""

    producto = models.ForeignKey(Producto,null = True, blank = True, on_delete = models.SET_NULL)
    valor    = models.DecimalField(max_digits=9, decimal_places=3)
    fecha    = models.DateTimeField('fecha de validez', unique = True)

    def __unicode__(self):
        return self.producto.nombre+" "+str(self.valor)+" Bf" #self.fecha.strftime("%d-%m-%Y : %I %p")

    class Meta:
        ordering = ['-fecha']

error

Internal Server Error: /admin/ventas_app/ventaproducto/add/
Traceback (most recent call last):
  File "C:\ad\lib\site-packages\django\core\handlers\base.py", line 164, in get_response
    response = response.render()
  File "C:\ad\lib\site-packages\django\template\response.py", line 158, in render
    self.content = self.rendered_content
  File "C:\ad\lib\site-packages\django\template\response.py", line 135, in rendered_content
    content = template.render(context, self._request)
  File "C:\ad\lib\site-packages\django\template\backends\django.py", line 74, in render
    return self.template.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 209, in render
    return self._render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 201, in _render
    return self.nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\loader_tags.py", line 135, in render
    return compiled_parent._render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 201, in _render
    return self.nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\loader_tags.py", line 135, in render
    return compiled_parent._render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 201, in _render
    return self.nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\loader_tags.py", line 65, in render
    result = block.nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\defaulttags.py", line 217, in render
    nodelist.append(node.render(context))
  File "C:\ad\lib\site-packages\django\template\loader_tags.py", line 159, in render
    return template.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 211, in render
    return self._render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 201, in _render
    return self.nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\defaulttags.py", line 217, in render
    nodelist.append(node.render(context))
  File "C:\ad\lib\site-packages\django\template\defaulttags.py", line 217, in render
    nodelist.append(node.render(context))
  File "C:\ad\lib\site-packages\django\template\defaulttags.py", line 329, in render
    return nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\defaulttags.py", line 329, in render
    return nodelist.render(context)
  File "C:\ad\lib\site-packages\django\template\base.py", line 903, in render
    bit = self.render_node(node, context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 79, in render_node
    return node.render(context)
  File "C:\ad\lib\site-packages\django\template\debug.py", line 92, in render
    output = force_text(output)
  File "C:\ad\lib\site-packages\django\utils\encoding.py", line 92, in force_text
    s = six.text_type(s)
  File "C:\ad\lib\site-packages\django\utils\html.py", line 390, in <lambda>
    klass.__unicode__ = lambda self: mark_safe(klass_unicode(self))
  File "C:\ad\lib\site-packages\django\forms\forms.py", line 543, in __str__
    return self.as_widget()
  File "C:\ad\lib\site-packages\django\forms\forms.py", line 599, in as_widget
    return force_text(widget.render(name, self.value(), attrs=attrs))
  File "C:\ad\lib\site-packages\django\contrib\admin\widgets.py", line 292, in render
    'widget': self.widget.render(name, value, *args, **kwargs),
  File "C:\ad\lib\site-packages\django\forms\widgets.py", line 513, in render
    options = self.render_options(choices, [value])
  File "C:\ad\lib\site-packages\django\forms\widgets.py", line 539, in render_options
    for option_value, option_label in chain(self.choices, choices):
  File "C:\ad\lib\site-packages\django\forms\models.py", line 1103, in __iter__
    yield self.choice(obj)
  File "C:\ad\lib\site-packages\django\forms\models.py", line 1110, in choice
    return (self.field.prepare_value(obj), self.field.label_from_instance(obj))
  File "C:\ad\lib\site-packages\django\forms\models.py", line 1181, in label_from_instance
    return smart_text(obj)
  File "C:\ad\lib\site-packages\django\utils\encoding.py", line 56, in smart_text
    return force_text(s, encoding, strings_only, errors)
  File "C:\ad\lib\site-packages\django\utils\encoding.py", line 92, in force_text
    s = six.text_type(s)
  File "C:\ad\sistema_ventas_ceic_master\ventas_app\models.py", line 101, in __unicode__
    return self.producto.nombre+" "+str(self.valor)+" Bf" #self.fecha.strftime("%d-%m-%Y : %I %p")
AttributeError: 'NoneType' object has no attribute 'nombre'
[20/Nov/2018 18:45:35]"GET /admin/ventas_app/ventaproducto/add/ HTTP/1.1" 500 325431
    
asked by Maria 20.11.2018 в 23:48
source

1 answer

1

try the following:

def __unicode__(self):
    return str(self.producto)+" "+str(self.valor)+" Bf" #self.fecha.strftime("%d-%m-%Y : %I %p")
    
answered by 30.11.2018 в 16:05