Вы могли записать функцию, которая преобразовывает IEnumerable в разделенную строку запятой
public string Concat(IEnumerable<string> stringList)
{
StringBuilder textBuilder = new StringBuilder();
string separator = String.Empty;
foreach(string item in stringList)
{
textBuilder.Append(separator);
textBuilder.Append(item);
separator = ", ";
}
return textBuilder.ToString();
}
, можно тогда использовать Linq для запросов набора/набора данных/и т.д. для обеспечения stringList.
Я тот, кто написал этот блог :)
Я не модифицировал модель пользователя, я расширил ее, она такая же, как профили, но я хотел сделать ее таким образом, что если вы уже определили профиль, вы все равно можете использовать мой метод.
Я думаю, что расширение модели User - лучший способ справиться с этим, я не знаю, есть ли какие-то возражения против него.
]Изменение модели auth User, вероятно, не очень «гибкий» подход.
Самый простой способ сделать это, вероятно, - предоставить профиль - Django имеет встроенную поддержку для предоставления модель профиля пользователя для хранения дополнительных данных, связанных с пользователем, без необходимости изменять какие-либо встроенные модели.
Вы просто сохраните время последней активности в профиле пользователя.
Я согласен, что лучший способ сделать это - использовать профиль. У него будет внешний ключ для таблицы Users, а не изменение существующей таблицы.
С точки зрения того, как записывать действия пользователя, одним из шаблонов может быть создание декоратора, который объединяет все представления, которые вы хотите записать. Декоратор просто записывает время и действие в профиле соответствующего пользователя.