получить доступ к отношениям OneToOne и перейти к шаблону в Django - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь получить доступ к отношениям oneToOne, но у меня не получилось.

согласно этой документации https://docs.djangoproject.com/en/2.0/topics/db/examples/one_to_one/

A Restaurant can access its place:

>>> r.place
<Place: Demon Dogs the place>
A Place can access its restaurant, if available:

>>> p1.restaurant
<Restaurant: Demon Dogs the restaurant>

вот мой model.py

class Employee(models.Model):
    idemp = models.CharField(max_length=100)
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class EmployeeDetail(models.Model):
    nationality = models.CharField(max_length=50)
    employee = models.OneToOneField(Employee,on_delete=models.CASCADE,primary_key=True,)

вот мой view.py

class EmployeeListView(ListView):
    context_object_name = 'employees'
    model = models.Employee

а вот мой employee_list.html

{% for employee in employees %}
    <tr>
        <td>{{ employee.idemp }}</td>
        <td>{{ employee.name }}</td>
        <td>{{ employee.nationality }}</td>
    </tr>
{% endfor %}

запустите его, и в результате отобразятся только idemp и name.

я что-то пропустил? ...

также

Я делю таблицу на 2 таблицы для employee и employe details, так как у меня есть доступ к данным и я покажу только 4 столбца для списка сотрудников, а другие (подробности) получат доступ ко всем столбцам.

что лучше? ...

1. use one table for many columns

или

2. split the table into 2 or more for many columns (как и в моем случае, я делю employee и employeedetails)

объясните, пожалуйста, с why и because, мой мозг немного замедлен.

Большое спасибо

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете получить доступ к обратному полю OneToOne с атрибутом modelname, employeedetail в вашем случае. Чтобы получить nationality, вам нужно сделать employee.employeedetail.nationality. Попробуйте это:

{% for employee in employees %}
    <tr>
        <td>{{ employee.idemp }}</td>
        <td>{{ employee.name }}</td>
        <td>{{ employee.employeedetail.nationality }}</td>
    </tr>
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...