模板.html
{% for portfolioList in portfolio_list %}
<div class="jobster-timeline-item">
<div class="jobster-timeline-cricle">
<i class="far fa-circle"></i>
</div>
<div class="jobster-timeline-info">
<div class="dashboard-timeline-info">
<div class="dashboard-timeline-edit">
<ul class="list-unstyled d-flex">
<li><a class="text-right" href="{% url 'MyPortfolioUpdate' post_id=portfolioList.idx %}" role="button"> <i class="fas fa-pencil-alt text-info mr-2"></i> </a></li>
<li><a href="#"><i class="far fa-trash-alt text-danger"></i></a></li>
</ul>
</div>
<span class="jobster-timeline-time">{{portfolioList.start_date|date:"Y? m?"}} ~ {{portfolioList.end_date|date:"Y? m?"}}</span>
<h6 class="mb-2">{{portfolioList.subject}}</h6>
<span>-{{portfolioList.client_name}}</span>
<p class="mt-2">{{portfolioList.content|linebreaksbr}}</p>
<div class="row">
{% for portfolioImgList in portfolio_img_list %}
{% if portfolioImgList.portfolio_idx.idx == portfolioList.idx %}
<div class="col-md-6">
<img class="img-fluid" src="{{portfolioImgList.file.url}}" alt="" >
</div>
{% endif %}
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
查看.py
q = Q()
q &= Q(user_idx = request.user.id)
portfolio_list = UserPortfolio.objects.filter(q).order_by('-idx')
q = Q()
q &= Q(portfolio_idx__user_idx = request.user.id)
portfolio_img_list = UserPortfolioFile.objects.filter(q).order_by('-idx')
return render(request, 'account/setting/portfolio_list.html', {"portfolio_list":portfolio_list, "portfolio_img_list":portfolio_img_list}
模型.py
class UserPortfolio(models.Model):
idx = models.AutoField(primary_key=True)
user_idx = models.ForeignKey(
User,
db_column='user_idx',
on_delete=models.CASCADE
)
subject = models.CharField(max_length=255)
client_name = models.CharField(max_length=255)
client_service = models.CharField(max_length=255)
client_category = models.CharField(max_length=255)
start_date = models.DateTimeField()
end_date = models.DateTimeField()
content = models.TextField()
write_date = models.DateTimeField(auto_now = True)
update_date = models.DateTimeField(auto_now = True)
is_file = models.CharField(max_length=1)
class Meta:
managed = False
db_table = 'account_user_portfolio'
def portfolio_upload_to(instance, filename):
nowDate = datetime.now().strftime("%Y/%m/%d")
return '/'.join([str(instance.portfolio_idx.user_idx), instance.folder , nowDate, filename])
class UserPortfolioFile(models.Model):
idx = models.AutoField(primary_key=True)
portfolio_idx = models.ForeignKey(
UserPortfolio,
db_column='portfolio_idx',
on_delete=models.CASCADE
)
folder = 'portfolio'
file = models.ImageField(upload_to=portfolio_upload_to)
class Meta:
managed = False
db_table = 'account_user_portfolio_file'
這是結果。

我想在 view.py 中使用 join orm。不是這樣的。在 template.py 中使用“if”
我怎樣才能做到這一點?我嘗試使用join sql。但它沒有用。
我使用了 prefetch_related 這個。但它的結果和現在一樣。
我認為這可能很好。不是嗎?
請回答一些問題并感謝每一位
uj5u.com熱心網友回復:
您可以列舉.userportfoliofile_set.all:
{% for portfolioImgList in portfolioList.userportfoliofile_set.all %}
…
{% endfor %}
這將進行查詢以僅檢索UserPortfolioFile與portfolioList物件相關的s 。
在視圖中,您可以使用.prefetch_related(…)[Django-doc] 來通過一個查詢獲取所有相關專案,因此:
def some_view(request):
portfolio_list = UserPortfolio.objects.filter(
user_idx=request.user.id
).prefetch_related('userportfoliofile_set').order_by('-idx')
return render(request, 'account/setting/portfolio_list.html', {'portfolio_list':portfolio_list})
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/378544.html
標籤:姜戈
