如何将django模型中的数据更新为视图中的标题大小写?

如何将django模型中的数据更新为视图中的标题大小写?,django,django-models,django-views,Django,Django Models,Django Views,我正在尝试将数据库中的一列字符串(如“HOSPITAL ZERO”、“HOSPITAL ONE”)更改为views.py或models.py中的title case或“HOSPITAL ZERO”。我两个都试过了,但都不能为我工作 这是我在views.py中的代码。列在医院模型中的名称下,即Hospital.name def results(request): if request.method == "GET": Q=() out_words = request

我正在尝试将数据库中的一列字符串(如“HOSPITAL ZERO”、“HOSPITAL ONE”)更改为views.py或models.py中的title case或“HOSPITAL ZERO”。我两个都试过了,但都不能为我工作

这是我在views.py中的代码。列在医院模型中的名称下,即Hospital.name

def results(request):
    if request.method == "GET":
      Q=()
      out_words = request.GET.get('s')
      context = RequestContext(request)
      #here is where I tried to change it
      qs = Price.objects.annotate(hospital__name=Lower('hospital__name'))
      table = PriceTable(qs.filter(service__desc_us__icontains = out_words))
      RequestConfig(request, paginate={'per_page': 10}).configure(table)
      RequestConfig(request).configure(table)
    else:
      table = PriceTable(Price.objects.all())
      RequestConfig(request).configure(table)

    return render(request, 'results.html', {'table': table})
下面是我在model.py中的尝试

    class Hospital(models.Model):
        """Model representing Hospitals."""
        hid = models.CharField(max_length = 8, null=True)
        name = models.CharField(max_length=200, primary_key=True)
        hopid = models.UUIDField(default=uuid.uuid4, help_text='Unique ID for this particular hospital in database')
        address = models.CharField(max_length = 200, null = True)


        class Meta:
            ordering = ['hopid']
        #here is where i tried to update it
        def save(self, *args, **kwargs):
            self.name = self.name.title()
            return super(Hospital, self).save(*args, **kwargs)

        def __str__(self):
            """String for representing the Model object."""
            return f'{self.name} ({self.address})'

class Price(models.Model):
  """Model with all the hospital prices by service."""
  priceid = models.UUIDField(primary_key=True, default=uuid.uuid4, help_text='Unique ID for this particular service in database')
  comments = models.CharField(max_length = 200, blank = True, null =True)
  hospital = models.ForeignKey("Hospital", on_delete=models.SET_NULL, null=True)

  class Meta:
      ordering =['priceid']


  def __str__(self):
      return f'{self.hospital.name} (...)'

这里有一个新的方法用于您的医院模型,名为
get\u title\u case\u name
。现在,您可以通过调用
hospital\u实例来访问医院名称。获取\u title\u case\u name()

您可以尝试以下方法:

"HOSPITAL ONE".lower().capitalize()
my_string.lower().capitalize()

这里有一个选项:

def save(self, *args, **kwargs):
        self.name = self.name.lower().capitalize()
        return super(Hospital, self).save(*args, **kwargs)

只需将方法添加到模型:

def get_title_case_name(self):
        return self.name.title()

在视图/模板中,您可以对模型对象运行此方法。

感谢您的回复。数据是大写的,我试图在视图中将其显示为标题大小写。我不明白你的答案,我知道。试试代码。Python中的capitalize()函数将字符串转换为句子大小写。一旦上述内容出现在模型中,就可以获得一个医院实例:
h=Hospital.objects.all()[0]
。然后,运行函数:
h.get\u title\u case\u name()
。您是否建议我将此函数导入到视图中,因为我似乎无法。我想这样做:qs=Price.objects.annotate(hospital\uu name\uuu get\u title\u case\u name=get\u title\u case\u name('hospital\uu name'))我不确定您想对价格模型做什么,因为您的查询中没有包含任何价格模型的代码。如果您想获取所有医院的标题病例名称,可以在视图中使用以下内容:return
[hospital.get\u title\u case\u name(),for hospital in hospital.objects.all()]
。感谢您的回答。这不是一根线。它是数据库中的一列。无法将其导入到视图中。我已经从Catalog.models导入了get_title_case_name,它抛出了一个错误,您不需要导入它。一旦有了目录对象。您可以对其运行此方法。
def get_title_case_name(self):
        return self.name.title()