Я использую SeparatedValuesField для отслеживания списка строк, как объяснено http://davidcramer.posterous.com/code/181/custom-fields-in-django.html, и многих постов здесь на SO, которые рекомендуют это как правильный способ хранения списка строк.
class UserProfile(models.Model):
user = models.OneToOneField(User)
device_ids = SeparatedValuesField(blank=True, null=True, default=[])
В моем приложении все работает нормально, я могу добавить идентификаторы устройств и просматривать их в интерфейсе администратора, как и ожидалось.
user_profile.device_ids = ['666666-D849-524F-6984-7E9B2D768546']
Но проблема в интерфейсе администратора, когда я открываю страницу сведений для объекта UserProfile, сам интерфейс администратора добавляет дополнительные значения в мое поле device_ids.
Например, мое приложение вставляет значение в поле, и когда я вижу его в интерфейсе администратора, оно выглядит так:
[u'666666-D849-524F-6984-7E9B2D768546']
Затем я изменяю другое случайное свойство в своем объекте UserProfile и сохраняю его, используя встроенную кнопку сохранения интерфейса администратора django.
Когда я снова открываю страницу сведений об объекте UserProfile для моего объекта, это значение теперь выглядит так:
[u"[u'666666-D849-524F-6984-7E9B2D768546']"]
Если я повторю этот процесс, просто нажав «Сохранить», а затем открою эту страницу сведений, она продолжит вложение фактического значения с символами «» [*].
Что я могу сделать, чтобы изменить эту функциональность? Должен ли я хранить список строк другим способом?