Как выбрать информацию в другой таблице на основе идентификатора, предоставленного с помощью цикла - PullRequest
0 голосов
/ 27 января 2019

Супер новый для django, работающий над моим первым тестовым проектом.У меня есть приложение, которое называется клиенты.Внутри у меня есть несколько моделей.Когда я сейчас пытаюсь приступить к работе, двумя главными являются Customer_Info и Company_Info.На стороне шаблона я хочу получить информацию в цикле for из обоих шаблонов.Компании могут иметь несколько клиентов (контактов).Таким образом, внутри таблицы информации о клиентах я храню информацию о компании, которой они могут принадлежать.Некоторые клиенты не имеют этого идентификатора, поскольку они являются физическими лицами и не имеют ассоциации с компанией.

Вот две модели.

class Customer_Info(models.Model): #Name of the table

    id = models.AutoField(primary_key=True)
    cust_uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    first_name = models.CharField(max_length=32, blank=False)
    middle_name = models.CharField(max_length=32, blank=True)
    last_name = models.CharField(max_length=32, blank=False)
    phone = models.CharField(max_length=10, blank=False)
    email = models.CharField(max_length=64, blank=False)
    address_1 = models.CharField(max_length=64, blank=True, null=True)
    address_2 = models.CharField(max_length=64, blank=True, null=True)
    city = models.CharField(max_length=16, blank=True, null=True)
    state = models.CharField(max_length=2, blank=True, null=True)
    zipcode = models.IntegerField(blank=True, null=True)
    country = models.CharField(max_length=16, blank=True, null=True)
    company_uuid = models.ForeignKey('company_info', to_field='company_uuid', db_column='company_uuid', on_delete=models.PROTECT,  blank=True, null=True) # miht need a nullable defaul https://docs.djangoproject.com/en/2.1/ref/models/fields/#foreignkey
    user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, blank=False) # miht need a something else https://docs.djangoproject.com/en/2.1/ref/models/fields/#foreignkey
    date_added = models.DateTimeField(auto_now=True)


    def __str__(self):
        return 'Customer ID: {0} | First Name: {1} | Last Name: {2} | Phone: {3} | Email: {4}'.format(self.cust_uuid, self.first_name, self.last_name, self.phone, self.email)

class Company_Info(models.Model):
    id = models.AutoField(primary_key=True)
    company_uuid = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)
    company_name = models.CharField(max_length=64, blank=False)
    website = models.CharField(max_length=200, blank=True, null=True)
    user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, blank=False) # miht need a something else https://docs.djangoproject.com/en/2.1/ref/models/fields/#foreignkey
    date_added = models.DateTimeField(auto_now=True)

    def __str__(self):
        return 'Company ID: {0} | Company Name: {1}'.format(self.company_uuid, self.company_name)

Вот то, что у меня есть для моего просмотра.

def customers(request):
    company_customer_info = {
        'companies': Company_Info.objects.all(),
        'customers': Customer_Info.objects.all(),
    }
    return render(request, 'customers/customers.html', company_customer_info)

А вот что у меня есть в шаблоне.

Вот что у меня работает, но я не знаю, как получить имя контакта ...

{% for company in companies %}
    <tr>
        <td>{{ company.id }}</td>
        <td>{{ company.company_name }}</td>
        <td>contact name here</td>
        <td>{{ company.website }}</td>
        <td>{{ company.date_added|date:"N d, Y" }}</td>
    </tr>
{% endfor %}

На той же странице у меня тоже есть, и это работает.

{% for customer in customers %}
    <tr>
        <td>{{ customer.id }}</td>
        <td>{{ customer.first_name }}</td>
        <td>{{ customer.last_name }}</td>
        <td>{{ customer.company_uuid.company_name}}</td>
        <td>{{ customer.phone }}</td>
        <td>{{ customer.email }}</td>
        <td>{{ customer.date_added|date:"N d, Y" }}</td>
    </tr>
{% endfor %}

Любая помощь очень ценится, я пытался обернуть голову вокруг документации Django по наборам запросов,но я не очень далеко ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...