Как я могу создать объект против объекта с идентификатором - PullRequest
1 голос
/ 21 января 2020

поэтому я хотел бы создать объект против объекта. например. Я хочу создать «тикет», который можно сделать только после того, как будет создан «лидерство». Поэтому они имеют отношения один ко многим. У одного лидера может быть много билетов. Несмотря на то, что тикеты создаются по инициативе, но я не могу управлять этим с помощью шаблона.

ниже приведен код.

models.py

class Lead(models.Model):
    lead_title  = models.CharField(max_length=255, null=True, blank=True)
    agent_id    = models.IntegerField(null=True, blank=True)
    email       = models.EmailField(null=True, blank=True)
    .......


class Ticket(models.Model):
    lead   = models.ForeignKey(Lead, on_delete=models.CASCADE, blank=True, null=True)
    passenger_name = models.CharField(max_length=255, null=True, blank=True)
    .......

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

def detail_lead(request, id): 
    lead = Lead.objects.get(id=id)
    ticket = lead.ticket_set.all()

    context = {

        'lead' : lead,
        'ticket' : ticket,

    }

    return render(request, 'lead/detail_lead.html', context)

def create_ticket(request, id):
    ticket = Ticket.objects.get(id=id)
    if request.method == 'POST':
        form = Ticket_form(request.POST)
        if form.is_valid():
            form.save()
            print(form)
            return redirect('lead:listlead')
    else:
        form = Ticket_form()

    context = {
        'form' : form
    }
    return render(request, 'ticket/create_ticket.html', context)

urls.py


path('detaillead/<int:id>', detail_lead, name="detaillead"),
.....
path('createticket/<int:id>/', create_ticket, name="createticket"),

detail_lead. html

<a href="{% url 'createticket' lead.id %}"><button type="button" class="btn btn-success">Add
                      Ticket</button></a>

Таким образом, detail_lead. html имеет кнопку "Добавить заявку" msgstr "который переходит на страницу добавления тикета, но как только я создаю тикет, он не создает тикет против этого конкретного текущего предложения. и когда я вижу на странице администратора и ищу созданный тикет, он не выбрал ни одного "ведущего".

Что я здесь не так делаю. Я хочу создать заявку только против этого текущего лидера. Я знаю, что должен передать идентификатор лидерства в тег «а», но его все еще не происходит. Что я тут не так делаю?

Чем ты заранее

1 Ответ

1 голос
/ 21 января 2020

Идентификатор, который вы отправляете отсюда "{% url 'createticket' lead.id%}", является идентификатором ведущего, но почему вы используете его, чтобы найти тикет? Какова цель поиска билета по идентификатору, если вы все равно собираетесь его создать?

Используйте этот идентификатор, чтобы найти заявку, и после того, как заявка будет создана, установите связь между заявкой и сделкой.

Так и должно быть

lead = Lead.objects.get(id=id)
....
..... 
if form.is_valid():
    item = form.instance
    item.save()
    lead.ticket_set.add(item)
    lead.save()

Ссылка:
https://docs.djangoproject.com/en/3.0/topics/db/examples/many_to_one/#many-к-одному-отношениям

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