Мне сказали, что рекомендуется использовать поле имени пользователя ForeignKey(User)
, поэтому я пытаюсь реализовать это сейчас. Но у меня проблемы с переходом от моего текущего Charfield() к полю ForeignKey().Изменение поля моего имени от CharField до ForeignKey
Мой код ниже показывает, как мой текущий CharField()
используется для оказания помощи при вызове ajax. В настоящее время он работает, нажимая на имя пользователя, которое получает HTML-адрес этого имени пользователя, а затем может .get() любой профиль, выполнив поиск CharField()
следующим образом: profile = Profile.objects.get(username=username_clicked)
. Кстати, HTML из этого имени пользователя щелкнул от другого Charfield()
, author
, который является полем в моей модели комментариев, когда кто-то делает комментарий. Таким образом, вызов ajax открывает небольшой поле профиля с несколькими деталями щелчка пользователя. Вот мой код:
профиль модели
class Profile(models.Model):
username = models.CharField(max_length=32, default='AnonymousUser')
age = models.IntegerField(default=0)
points = models.IntegerField(default=0)
def __str__(self):
return self.username
JS
$('a.username').on('click', function() {
var username = $(this).html();
var url = "/raise_profile/";
$.ajax({
type: 'GET',
url: url,
data: {
username_clicked: username,
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val()
},
success: function (data) {
$('.profile_username').html(data.username);
$('.profile_age').html(data.age);
$('.profile_points').html(data.points);
}
})
});
вид
def raise_profile(request):
username_clicked = request.GET.get('username_clicked')
if request.is_ajax():
profile = Profile.objects.get(username=username_clicked)
profileAge = profile.age
profileUsername = profile.username
profilePoints = profile.points
return JsonResponse({'age': profileAge, 'username': profileUsername, 'points': profilePoints})
комментарий модель
class Comment(models.Model):
comment_text = models.TextField(max_length=350, blank=True, null=True)
author = models.CharField(max_length=120, blank=True)
комментарии шаблон
<h3><a class="username">{{ i.author }}</a></h3>
Может кто-нибудь сказать мне, как я могу изменить свой текущий процесс, так что я могу использовать ForeignKey() вместо CharField() для моего имени/автора поля? Мне сообщили, что в этой ситуации использование ForeignKey()
улучшит функциональность.
Кроме того, вот мой комментарий функция, которая включает в себя добавление author
поля (имя пользователя, комментирование, как CharField()
):
def user_comment(request):
if request.is_ajax():
comment = CommentForm(request.POST or None)
ajax_comment = request.POST.get('text') #the comment
id = request.POST.get('id')
if comment.is_valid():
comment = Comment.objects.create(comment_text=ajax_comment, author=str(request.user), destination=id)
comment.save()
username = str(request.user)
return JsonResponse({'text': ajax_comment, 'username': username})
«Профиль» не индивидуальный URL, он просто приносит (AJAX) на одной странице с небольшим резюме пользователя, поэтому я не могу добавить тег ''. – Zorgan
Но эта маленькая коробка подходит через аякс? Тогда почему у вас нет URL-адреса, который принесет вам эти данные? –
Да, но если я это сделаю, добавив тег 'href', то он изменит страницу. Мне нужно оставаться на одной странице (обновление страницы не требуется). – Zorgan