Как мне выполнить строковые действия с некоторыми CharField () или TextField прямо в определении модели? - PullRequest
0 голосов
/ 11 июля 2020

Я работаю над одним из моих первых Django проектов, и над одной из моделей мне нужно поле, которое возвращает список, который я могу oop использовать в своих шаблонах. Я пытался сделать это прямо здесь, в models.py, потому что из руководств я узнал, что лучше всего выполнять все операции с данными или logi c в файле моделей, и ничего из этого не должно выполняться в шаблонах, как шаблон предназначен только для рендеринга уже проанализированных данных. Я пробовал:

class Profile():
    '''More user information.'''
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    user.first_name = models.CharField(max_length=25)
    user.last_name = models.CharField(max_length=25)
    interests = models.CharField(max_length=200)
    user.interests = [interest.strip() for interest in interests.split(',')]

В приведенном выше фрагменте кода я попытался разделить вводимые пользователем значения, разделенные запятыми, чтобы попытаться составить их список, но получил ошибку: AttributeError: 'TextField' object has no attribute 'split'. Поскольку models.Charfield () и models.TextField () не возвращают строку, как мне go об этом? Я использую sqlite db на своем локальном.

1 Ответ

0 голосов
/ 11 июля 2020
  1. Модель пользователя уже имеет first_name и last_name, поэтому вы можете удалить
  2. Если вы хотите, чтобы ваша модель пользователя имела свойство, интересующее вас, вам нужно пользовательская модель пользователя
  3. Для выполнения действия в поле перед его сохранением, например, при разделении интересов, вы можете переопределить метод сохранения для модели
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...