Django, queryset 결과의 문자열을 변경하는 방법.

Django3.1, queryset 결과 문자열을 변경하는 방법.

아래의 모델에 저장된 MAC 주소는 ‘0021ccd3792f’ 같은 형식으로 일반적으로 표현되는 : 이나 – 이 제거된 형태다.

models.py

class MacTable(models.Model):
...
    mac = models.CharField(max_length=32, verbose_name='MAC Address.')
    device = models.ForeignKey(
        'NetworkDevice', on_delete=models.CASCADE, verbose_name='Network Device'
    )
    interface = models.CharField(max_length=32, verbose_name='Interface')
    vlan = models.CharField(max_length=32, verbose_name='VLAN')
    dropped = models.BooleanField(default=False, verbose_name='Dropped')
....

    class Meta:
        verbose_name_plural = 'MAC address table'
        # unique_together = ('mac', 'device')

이것을 queryset 결과로 템플릿에서 보여주면 ‘0021ccd3792f’ 형식으로 보인다.

이것을 보다 일반적인 ’00:21:cc:d3:79:2f’ 와 같은 형식으로 보여 주려면 몇 가지 방법이 있겠지만, 기존의 queryset이나 view를 수정하지 않고 해당 모델에 아래와 같은 메소드를 추가해 주면 된다.

    @property
    def colon_view_mac(self):
        tmp = self.mac
        mac = f'{tmp[0:2]}:{tmp[2:4]}:{tmp[4:6]}:{tmp[6:8]}:{tmp[8:10]}:{tmp[10:12]}'
        return mac.lower()

그리고, 템플릿 파일을 수정해 준다.

기존의 템플릿에서 mac을 보여주는 부분이 {{ i.mac }} 이었다면, 이 메소드 이름으로 바꿔주면된다.
즉, {{ i.mac }} 을 {{ i.colon_view_mac }} 로 바꿔주면 된다.

답글 남기기

Your email address will not be published.