I have two models: Usecase and Usecase_progress. I'm creating a page where I can see a list of all the use cases with their information + the usecase progress for each use case.
Usecase model:
class Usecase(models.Model):
usecase_id = models.CharField(primary_key=True, max_length=20)
usecase_name = models.CharField(max_length=256)
user_email = models.ForeignKey('User', models.DO_NOTHING, db_column='user_email')
usecase_type = models.ForeignKey('UsecaseType', models.DO_NOTHING)
kpi = models.ForeignKey(Kpi, models.DO_NOTHING)
business_owner = models.ForeignKey(BusinessOwner, models.DO_NOTHING)
usecase_description = models.CharField(max_length=5000)
usecase_creation_date = models.DateField()
estimated_date = models.DateField()
usecase_priority = models.CharField(max_length=100)
usecase_git = models.CharField(max_length=512, blank=True, null=True)
current_phase = models.ForeignKey(Phase, models.DO_NOTHING)
delivery_date = models.DateField()
class Meta:
managed = False
db_table = 'usecase'
usecase progress model:
class UsecaseProgress(models.Model):
usecase_progress_date = models.DateTimeField(primary_key=True)
usecase = models.ForeignKey(Usecase, models.DO_NOTHING, related_name='usecaseids')
phase = models.ForeignKey(Phase, models.DO_NOTHING)
pipeline = models.ForeignKey(Pipeline, models.DO_NOTHING)
usecase_progress_value = models.IntegerField()
estimated_date_delivery = models.DateField(db_column='Estimated_Date_Delivery')
My views.py:
@user_login_required
def view_usecase(request):
usecase_details = Usecase.objects.all()
context = {'usecase_details': usecase_details}
return render(request, 'ViewUsecase.html', context)
My template:
{% extends 'EmpDashboard.html' %}
{% block body %}
{% if usecase_details is not none and usecase_details %}<div class="col-12 mb-4">
{% for result in usecase_details %}
<div class="card border-light shadow-sm components-section d-flex ">
<div class="card-body d-flex ">
<div class="row mb-4">
<div class="card-body">
<div class="row col-12">
<form>
<div class="mb-4">
<h6 class="fs-5 fw-bold mb-0 border-bottom pb-3">{{result.usecase_id}} - {{result.usecase_name}}</h6>
<div class="mb-0 mt-2">{{result.usecase_description}}</div>
</div>
<div class="form-row mb-4">
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Business Owner:</label>
<div class="mb-0">{{result.business_owner.business_owner_name}}</div>
</div>
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Owner:</label>
<div class="mb-0">{{result.user_email}}</div>
</div>
</div>
<div class="form-row mb-4">
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Usecase type:</label>
<div class="mb-0">{{result.usecase_type.usecase_type_name}}</div>
</div>
{% for progress in usecase.usecaseids.all %}
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Progress:</label>
<div class="mb-0">{{progress.usecase_progress_date}}</div>
</div>
{% endfor %}
</div>
<div class="form-row mb-4">
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Usecase creation date:</label>
<div class="mb-0">{{result.usecase_creation_date}}</div>
</div>
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Estimated date:</label>
<div class="mb-0">{{result.estimated_date}}</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<br>
{% endfor %}
</div>
{% endif %}{% endblock %}
Anyway I'm not able to show see the progress date per usecase it's showing blank row.
Your loop for displaying progress is not good. your variable is named result
, not usecase
:
{% for progress in result.usecaseids.all %}
<div class="col-lg-4 mr-f">
<label class="h6" for="exampleFormControlTextarea1">Progress:</label>
<div class="mb-0">{{progress.usecase_progress_date}}</div>
</div>
{% endfor %}
You can add data prefetching in your view for making SQL join for retrieving all data. If not, Django will make a query for each row.
@user_login_required
def view_usecase(request):
usecase_details = Usecase.objects.all()
usecase_details = usecase_details.prefetch_related("usecaseids")
context = {'usecase_details': usecase_details}
return render(request, 'ViewUsecase.html', context)
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments