Оптимизация отношений django manytomany

Мне интересно, есть ли способ сделать это более оптимизированным.

class AppTopic(models.Model):
  topic = models.CharField(max_length=20) # lowercase (cookies)

class UserTopic(models.Model):
  topic = models.CharField(max_length=20) # Any case (cOoKiEs)
  app_topic = models.ForeignKey(AppTopic) # related to (cookies -> lowercase version of cOoKiEs) 

class User(models.Model):
  topics = models.ManyToManyField(UserTopic) # AppTopic stored with any case

Цель состоит в том, чтобы все AppTopics были строчными на самом низком уровне, но я хочу позволить пользователям выбирать, какую капитализацию они хотят. При этом я все еще хочу сохранить связь со строчной версией. Тема на самом низком уровне может быть cookies, пользователь может выбрать cOoKiEs, что все равно должно быть связано с оригинальным cookies.
. Мое текущее решение работает, но требует совершенно новой таблицы, которая практически не используется. Я буду продолжать использовать его, если не найдется более разумного способа сделать это.

В API моделей Django нет ничего, что позволило бы вам манипулировать значениями из самих моделей. Если вы не хотите изменять значение в базе данных или в экземпляре модели, вы можете изменить его отображение на уровне шаблона с помощью фильтра фильтр lower в языке шаблонов Django.

<body>
    <div>
        {% if condition %}
            <h1>{{AppTopic|lower}}</h1>
        {% else %}
            <h1>{{AppTopic|??}}</h1> #AppTopic but camelcase. There's no camelcase filter in Django
        {% endif %}
    </div>
</body

Views.py

def View(request, condition)
    ...

    return render(request, 'template.html', {condition:'condition'})
Вернуться на верх