Django: Как отобразить элементы ForeignKey с помощью ListView
Как я могу использовать ListView для отображения элементов ForeignKey?
Я не знаю, как писать в шаблоне, поэтому, пожалуйста, дайте мне знать.
Мой код приведен ниже.
exp/models.py
from django.db import models
from users.models import User
import uuid
class Experiment(models.Model):
experiment_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
subject = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
start = models.DateTimeField(null=True)
users/models.py
class User(AbstractBaseUser, PermissionsMixin):
uuid = models.UUIDField(default=uuid.uuid4,
primary_key=True, editable=False)
email = models.EmailField(_('email address'), unique=True)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
exp/urls.py
from django.conf.urls import url
from django.urls import include, path
from django.contrib.auth import views as auth_views
from . import views
app_name = 'exp'
urlpatterns = [
path('exp_data/', views.ExpList.as_view(), name='exp1_data'),
]
exp/views.py
class ExpList(ListView):
model = Experiment1
template_name = 'experiment1_list.html'
experiment1_list.html
<table border="1">
<tr>
<th>Full name</th>
<th>Email</th>
</tr>
{% for data in object_list %}
<tr>
<td>
{{ data.subject.first_name }} {{ data.subject.last_name }}
</td>
<td>{{ data.subject }}</td>
</tr>
{% endfor %}
</table>
Results
-------------------
|Full name|Email |
|---------|-------|
| |a@a.com|
|---------|-------|
| |b@b.com|
-------------------
Ожидаемые результаты
--------------------
|Full name |Email |
|----------|-------|
|John Smith|a@a.com|
|----------|-------|
|Jane Smith|b@b.com|
--------------------