Django - Template display model verbose_names & objects

后端 未结 3 1883
暗喜
暗喜 2020-12-31 20:08

I need to display several models name & objects in a template

Here is my view

def contents(request):
  \"\"\"Lists contents\"\"\         


        
3条回答
  •  耶瑟儿~
    2020-12-31 20:52

    An alternative solution is to subclass your model's QuerySet:

    class SomeQuerySet(models.QuerySet):
        @property
        def verbose_name(self):
            return self.model._meta.verbose_name
    
    class SomeModel(models.Model):
        ...
    
        objects = SomeQuerySet.as_manager()
    
        class Meta:
            verbose_name = 'Some Model'
    

    Now you can get the verbose_name from the queryset directly, without the need to iterate over it:

    {{ objects.verbose_name }}

    {% for objs in objects %} ...

    If you want to access the verbose_name from a model instance directly, and not from a QuerySet, you'll need to define a property in your model as well:

    class SomeModel(models.Model):
        ...
    
        objects = SomeQuerySet.as_manager()
    
        class Meta:
            verbose_name = 'Some Model'
    
        @property
        def verbose_name(self):
            return self._meta.verbose_name
    

提交回复
热议问题