Django как связать модель профиля пользователя с моделью комментариев для отображения данных из профиля пользователя?
Я хочу публично показывать фотографию профиля пользователя в разделе комментариев моего блога. Я пытался использовать foreignkey в моей модели комментария для подключения модели профиля пользователя, затем использовать это в моем html для показа фотографии профиля, но это не сработало.
<img src="{{blogcomment.userprofile.profile_pic.url}}"> #didn't show any profile picture until I manually go to admin panel and set foreignkey of userprofile in my blogcomment model.
<
<
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name="userprofile")
slug = models.SlugField(max_length=2000,unique=True,blank=True,null=True)
profile_pic = models.ImageField(upload_to='profile/images/',validators=[validate_file_size,FileExtensionValidator( ['png','jpg'] )],blank=True,null=True)
вот мой полный код:
модель блога:
class BlogComment(models.Model):
blog = models.ForeignKey(Blog,on_delete=models.CASCADE,null=True, blank=True,related_name="blogcomment_blog")
comment = models.TextField(max_length=50000)
name = models.CharField(max_length=250)
userprofile= models.ForeignKey(UserProfile,on_delete=models.CASCADE,null=True,blank=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='user_comment',blank=True,null=True)
views.py:
if comment_form.is_valid():
isinstance = comment_form.save(commit=False)
isinstance.user = request.user
isinstance.blog = blog
isinstance.save()
мой html-шаблон:
{% for q in queryset %}
{{q.user.first_name}}
{{q.comment}}
<img src="{{q.userprofile.profile_pic.url}}">
{%endfor%}
my froms.py
class CommentFrom(forms.ModelForm):
captcha = CaptchaField()
class Meta:
model = BlogComment
fields = ['name','email','comment','parent','sno','blog','user']
Если при установке внешнего ключа вручную из панели администратора он работает. Ваши модели и код шаблона верны. Но это означает, что вы не написали никакой логики или ваша логика не работает для установки внешнего ключа профиля пользователя в комментариях вашего блога.
Наконец-то я решил свои проблемы. Как сказал Willem Van Onsem, мне не хватает некоторых вещей в моих froms. Мне нужно, чтобы при появлении нового комментария сохранялся пользовательский ключ профиля с моей моделью комментариев. Я использую этот набор запросов UserProfile.objects.filter(user=request.user)
для поиска текущего id, затем передаю этот id в формы.
{%for i in user_profile%}
<input type="hidden" name='userprofile' value="{{i.id}}">
{%endfor%}