Оптимизация отношений 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'})