Django / Bootrap Отображение контактов из компании - PullRequest
0 голосов
/ 27 мая 2020

Я потратил несколько часов, пытаясь решить эту проблему. Дайте мне знать, если у вас есть идеи. Проблема: Я определил две модели. Один для контактов и один для компании. Могу создать один контакт и компанию отдельно. Как вывести контакты из одной компании. Например, если у меня есть contact1, contact2, работающие в CompanyA, я хотел бы видеть их в списке в профиле companyA.

Контакты

models.py

class Contact(models.Model):
   name = models.CharField(max_length=250)
   company = models.ForeignKey(Company, default=1, on_delete=models.CASCADE)

views.py

def create_contact(request):
        form = ContactForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            contact = form.save(commit=False)
            contact.save()
            return render(request, 'contacts/detail.html', {'contact': contact})
        context = {
            "form": form,
        }
        return render(request, 'contacts/create_contact.html', context)

Компания

models.py

class Company(models.Model):
   name = models.CharField(max_length=250)

views.py

def create_company(request):
    form = CompanyForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        company = form.save(commit=False)
        company.user = request.user
        company.company_logo = request.FILES['company_logo']            
        file_type = company.company_logo.url.split('.')[-1]           
        file_type = file_type.lower()          
        if file_type not in IMAGE_FILE_TYPES:
            context = {
                'company': company,
                'form': form,
                'error_message': 'Image file must be PNG, JPG, or JPEG',
            }
            return render(request, 'company/create_company.html', context)       
        company.save()
        return render(request, 'company/company_detail.html', {'company': company})
    context = {
        "form": form,
    }
    return render(request, 'company/create_company.html', context)

Company_detail. html

<table id="dtBasicExample" class="table table-striped table-hover">
    <thead>
        <tr>
            <th>#</th>
            <th>Name</th>

        </tr>
    </thead>
    <tbody>
            {% for contact in contacts.all %}               
        <tr>
            <td>{{ contact.id }}</td>
            <td>{{ contact.name }}</td>
            {% endfor %}    
        </tr>
    </tbody>
</table>

Ниже приведен второй файл views.py для контактов, который я создал, но не решил его.

Контакты 2

просмотров .py

def create_contact(request, company_id):
    form = ContactForm(request.POST or None, request.FILES or None)
    company = get_object_or_404(Company, pk=company_id)
    if form.is_valid():
        companys_contacts = company.contact_set.all()
        for s in company_songs:
            if s.contact_title == form.cleaned_data.get("contact_title"):
                context = {
                    'company': company,
                    'form': form,
                    'error_message': 'You already added that contact',
                }
                return render(request, 'contacts/create_contact.html', context)
        contact = form.save(commit=False)
        contact.company = company
        contact.photo = request.FILES['photo']
        file_type = contact.photo.url.split('.')[-1]
        file_type = file_type.lower()
        if file_type not in IMAGE_FILE_TYPES:
            context = {
                'company': company,
                'form': form,
                'error_message': 'Image file must be PNG, JPG',
            }
            return render(request, 'contacts/create_contact.html', context)

        contact.save()
        return render(request, 'contacts/detail.html', {'company': company})
    context = {
        'company': company,
        'form': form,
    }
    return render(request, 'contacts/create_contact.html', context)

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Если объект компании находится в контексте, вы должны иметь возможность:

{% for contact in company.contact_set.all %}               
  <tr>
    <td>{{ contact.id }}</td>
    <td>{{ contact.name }}</td>
  </tr>
{% endfor %}    

Вы можете сделать что-то вроде {{ company }}, чтобы дважды проверить, правильно ли вы получаете объект компании в шаблоне .

0 голосов
/ 27 мая 2020

Вы должны использовать компанию в качестве внешнего ключа в вашей модели контактов. Таким образом, вы можете легко найти контакты, связанные с компанией, или вы также можете выбрать компанию, связанную с контактом

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