Показать измененный внешний ключ в выпадающем списке формы django - PullRequest
0 голосов
/ 17 октября 2019

Models.py

class Receiver_client(models.Model):
    name = models.CharField(max_length=255, default=0)
    city = models.CharField(max_length=255, default=0)
    address = models.CharField(max_length=255, default=0)
    partner = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='client')

    def __str__ (self):
        return self.name

class OutwardDocket(models.Model):
    transaction_date = models.DateField(default=datetime.now)
    dispatch_date = models.DateField(default=datetime.now)
    sending_location = models.ForeignKey(Receiver_client, on_delete=models.CASCADE, related_name='receiver_location')

Views.py

@method_decorator([login_required, employee_required], name='dispatch')
class OutwardDocketFormView(CreateView):
    model = OutwardDocket
    form_class = OutwardDocketForm
    template_name = 'packsapp/employee/OutwardDocketForm.html'

    def form_valid (self, form):
        product = form.save(commit=False)
        product.save()
        messages.success(self.request, 'The OutwardDocket was created with success!')
        return redirect('employee:outward_table')

Forms.py

class OutwardDocketForm(forms.ModelForm):
    class Meta:
        model = OutwardDocket
        fields = "__all__"

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['sending_location'].queryset = Receiver_client.objects.all()

Я могу показать список Reciever_client в моемФорма OutwardDocket, но как я могу изменить ее таким образом, чтобы она отображала имя, а также город клиента получателя?

Я не хочу изменять str в получателемодель клиента в том виде, в каком она используется в нескольких местах.

HTML

{% extends 'base.html' %}

{% load crispy_forms_tags %}

{% block content %}
  <nav aria-label="breadcrumb">
    <ol class="breadcrumb">
{#      <li class="breadcrumb-item"><a href="{% url 'client:quiz_change_list' %}">Outward Docket</a></li>#}
      <li class="breadcrumb-item active" aria-current="page">Add a new Docket</li>
    </ol>
  </nav>
  <h2 class="mb-3">Add a new Docket</h2>
  <div class="row">
    <div class="col-md-6 col-sm-8 col-12">
      <form method="post" novalidate>
        {% csrf_token %}
        {{ form|crispy }}
        <button type="submit" class="btn btn-success">Save</button>
        <a href="{% url 'employee:products_table' %}" class="btn btn-outline-secondary" role="button">Nevermind</a>
      </form>
    </div>
  </div>
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...