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