У меня есть мнение:

def get_comment_tree(request):
    news_id = request.GET.get("news_id")
    ret = list(Comment.objects.filter(news_id=news_id).values("nid", "content", "parent_comment_id", "user", "create_time"))
    return JsonResponse(ret, safe=False)

Возврат представления будет отправлен обратно в ajax. Теперь проблема в том, как мне преобразовать значение "user" в "username" , теперь я получаю только user_id и create_time "в естественный или естественный формат времени .

Если я использую python для преобразования этих данных, думаю, это будет немного сложно, может помочь любой друг?

Это моя модель комментариев:

class Comment(models.Model):
    """

    评论表

    """
    nid = models.AutoField(primary_key=True)
    news = models.ForeignKey(verbose_name='评论文章', to='News',to_field='id',on_delete=models.CASCADE)
    user = models.ForeignKey(verbose_name='评论者', to='User',to_field='id',on_delete=models.CASCADE)
    content = models.CharField(verbose_name='评论内容', max_length=255)
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
    parent_comment = models.ForeignKey('self', null=True, on_delete=models.CASCADE)

    def __str__(self):
        return self.content
1
William 28 Фев 2021 в 07:18

4 ответа

Лучший ответ

Попробуйте

from django.db.models import F

Comment.objects.filter(news_id=news_id).values("nid", "content", "parent_comment_id", "create_time", username=F('user__username'))
1
Sumithran 28 Фев 2021 в 06:14

Если пользователь связан внешним ключом с models.user, то вы может получить доступ к имени пользователя как user.username.

А для create_time это зависит от типа данных, который вы настроили для него в файле models.py. Если это объект datetime, вы можете преобразовать его в строку, используя datetime.strftime () как create_time.strftime("%m/%d/%Y, %H:%M:%S")

0
P-DOX 28 Фев 2021 в 05:10

Если в модели комментариев используется ForeignKey, вы можете use user__username получить значение, если вы хотите изменить user__username на user, вы можете попробовать следующее:

list(Comment.objects.filter(news_id=news_id).values("nid", "content", "parent_comment_id", user='user__name', "create_time"))
0
ming 28 Фев 2021 в 05:13
ret = list(Comment.objects.filter(news_id=news_id).values("nid", "content", "parent_comment_id", "user__username", "create_time"))

Этот запрос покажет имя пользователя с ключом как user__username.

0
P-DOX 28 Фев 2021 в 06:00