Printing Objects in Django

前端 未结 3 1547
庸人自扰
庸人自扰 2020-12-31 04:30

So I\'ve connected Django to a pre-existing database successfully (inspect, validate and sync) and I\'ve created an app and a project and all that (I\'m reading the Django b

相关标签:
3条回答
  • 2020-12-31 05:02

    UPDATE: In Python 3.x, use __str__ instead of __unicode__

    What you are seeing is a list of Artist model instances. Your values are in a python object. If you would like to make the representation of those instances more helpful, you should define the __unicode__ method for them to print something useful:

    https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#unicode

    Its not a placeholder, its the actual object's representation, converted to unicode.

    0 讨论(0)
  • 2020-12-31 05:18

    Django uses an ORM (Object-Relational Mapper) that translates data back and forth between Python objects and database rows. So when you use it to get an item from the database, it converts it into a Python object.

    If that object doesn't define how to display itself as text, Django does it for you. Python does the same thing:

    >>> class MyObject(object):
    ...     pass
    ... 
    >>> [MyObject(), MyObject()]
    [<__main__.MyObject object at 0x0480E650>,
     <__main__.MyObject object at 0x0480E350>]
    

    If you want to see all of the actual values for the row for each object, use values.

    Here is the example from the docs:

    # This list contains a Blog object.
    >>> Blog.objects.filter(name__startswith='Beatles')
    [<Blog: Beatles Blog>]
    
    # This list contains a dictionary.
    >>> Blog.objects.filter(name__startswith='Beatles').values()
    [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}]
    
    0 讨论(0)
  • 2020-12-31 05:19

    if you want to use print method ovveride the unicode method in the model itself

     def __unicode__(self):
        return u'%s' % (self.id)
    

    here an example model

    class unit(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255)
    def __unicode__(self):
        return u'%s' % (self.name)
    
    print(unit.objects.all())
    [unit: KG, unit: PCs]
    
    0 讨论(0)
提交回复
热议问题