Присоединяйтесь к Джанго с Foreing Key - PullRequest
0 голосов
/ 15 января 2019

Я использую встроенную модель пользователя. Теперь я хочу отобразить в моем шаблоне first_name, last_name форму User модель и timesheet_is_running из TimesheetEntry модель.

Models.py

class TimesheetEntry(models.Model):
    timesheet_users = models.ForeignKey(User, on_delete=models.CASCADE,related_name='timesheet_users')
    timesheet_is_running = models.BooleanField(default=False)

    class Meta:
        db_table = "timesheet_entry"

View.py

class ClockInOutUserListView(LoginRequiredMixin, generic.TemplateView):
    template_name = 'admin/clock/clock.html'

    def get_context_data(self, **kwargs):   
        context = super(ClockInOutUserListView, self).get_context_data(**kwargs)
        company_name = self.request.user.userprofile.user_company
        context['users'] = User.objects.exclude(
            Q(userprofile__user_is_deleted = True) |
            Q(userprofile__user_company__company_is_deleted=True) | 
            Q(userprofile__user_role__acl_role_title='Admin')
            ).filter(
                Q(userprofile__user_company =company_name) 
            )
        #for user in context['users']:
            # job_user = TimesheetEntry.objects.get(timesheet_users=user)
            #print(user.timesheet_entry_set.all())

        return context

Для отображения я использую get_context_data, в котором context['users'] печатает моих пользователей first_name и last_name. Но я не могу отобразить timesheet_is_running, который находится в Jobs Модель. Так что я думал о join.

Пожалуйста, помогите объединить две модели User и TimesheetEntry, чтобы я мог отображать их в своем шаблоне

template.html

{% for user in users %}
  {{user.first_name}}
  {{user.last_name}}
  {{user.timesheet_is_running}} <!-- How can get this value in template -->
{% endfor %}

1 Ответ

0 голосов
/ 15 января 2019

если у вашего пользователя есть только одна запись, вы можете добавить ее непосредственно в шаблон (как уже упоминалось в комментариях). Для этого вы можете сделать:

{% for user in users %}
  {{user.first_name}}
  {{user.last_name}}
  {{user.timesheet_users.last.timesheet_is_running}}
{% endfor %}

или если у вас есть несколько записей расписания, вы можете просто просмотреть их все в шаблоне:

{% for user in users %}
  {{user.first_name}}
  {{user.last_name}}
  {% for entry in user.timesheet_is_running.all %}
     {{entry.timesheet_is_running}}
  {% endfor %}
{% endfor %}
...