Как использовать поля профиля в форме комментариев?
Я хочу сделать форму комментариев обязательной для входа в систему и для этого мне пришлось использовать поля в другом 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="#"> </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)