Как использовать поля профиля в форме комментариев?

Я хочу сделать форму комментариев обязательной для входа в систему и для этого мне пришлось использовать поля в другом models.py как я могу использовать поля без foreignkey?

models.py в приложении blog:

class Comment(models.Model):
post                = models.ForeignKey(Post, on_delete=models.CASCADE, related_name='comments')
user                = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='user_comments', blank=True, null=True)
body                = models.TextField()
created             = models.DateTimeField(auto_now_add=True)
updated             = models.DateTimeField(auto_now=True)
active              = models.BooleanField(default=False)

class Meta:
    ordering = ('created',)
    
def __str__(self):
    return f'نظر توسط {self.user} در {self.post}' 

models.py in account app:

class Profile(models.Model):
    STATUS_CHOICES = (
        ('manager', 'مدیر'),
        ('developer', 'توسعه‌دهنده'),
        ('designer', 'طراح پروژه'),
    )
    
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    bio  = models.CharField(max_length=50, blank=True)
    task = models.CharField(choices=STATUS_CHOICES, max_length=20, blank=True, null=True, default=None)
    date_of_birth = models.DateField(blank=True, null=True)
    photo = models.ImageField(upload_to='users/photos/%Y/%m/%d/', blank=True)
    
    def __str__(self):
        return f'profile for user {self.user.username}'

я хочу использовать полное имя пользователя и фотографию в шаблоне комментария, а с foreignkey не могу

template:

<div id="post_comments">
      <h4>نظرات</h4>
      <div class="comment">
           {% for comment in comments %}
           <div class="row">
                <figure class="col-sm-2 col-md-2"> <img width="90" height="90" class="img-circle" src="{{ comment.user.photo }}" alt="عکس کاربر"> </figure>
                <div class="col-sm-10 col-md-10">
                     <div class="comment_name">{{ comment.user.user.get_full_name }}<a class="reply" href="#">&nbsp;</a> </div>
                     <div class="comment_date"><i class="fa-time"></i>{{ comment.created }}</div>
                     <div class="the_comment">
                          <p>{{ comment.body|linebreaks }}</p>
                     </div>
                </div>
           </div>
           {% empty %}
                <h4>هیچ نظری وجود ندارد</h4>
           {% endfor %}
      </div>
 </div>

есть ли решение для этой проблемы?

Я думаю, что вы можете использовать OneToOneField.

вместо этого:

user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='user_comments', blank=True, null=True)

Попробуйте это:

user = models.OneToOneField(Profile, on_delete=models.CASCADE, related_name='user_comments', blank=True, null=True)
Вернуться на верх