Django: кнопка html, ссылающаяся на внешний ключ

#python #html #django

#python #HTML #django

Вопрос:

я совсем новичок в Django, и я застрял на foreignkeys здесь. Я видел несколько руководств и прочитал много вопросов здесь, но я действительно не нашел ответа :/

Итак, чтобы объяснить контекст: у меня есть 2 модели:

 class example(models.Model):
    creation_date = models.DateTimeField(auto_now = True)
    a = models.CharField(max_length=50)
    b = models.CharField(max_length=50)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
 
 class addexample(models.Model):
    creation_date = models.DateTimeField(auto_now = True)
    id = models.ForeignKey(Example, on_delete=models.CASCADE)
    c = models.DecimalField(max_digits=12, decimal_places=2)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
 

это мой example.html

         {% for item in example %}   
            <tr>                    
            <td>{{ item.a }}</td>
            <td>{{ item.b }}</td>
            <td>
               <a class="btn btn-primary" href="/example2" role="button">Link</a>
            </td>
            </tr>

            {% endfor %
 

Итак, в моей таблице есть кнопка, которая ссылается на определенный идентификатор базы данных. Итак, как мне поступить в моем views.py ? другими словами, если я нажму кнопку и перейду к этой «подчиненной форме», где я могу добавить дополнения (в данном случае это означает addexample.c). Как мне получить внешний ключ кнопки из строки, которую я только что нажал?

Я знаю, как запросить идентификатор пользователя, но как мне запросить этот внешний ключ этой кнопки?

Заранее большое спасибо!

Комментарии:

1. какой внешний ключ вы пытаетесь получить?

2. Я пытаюсь получить внешний ключ из модели «Example». Они связаны друг с другом. Вы можете думать о том, что Example является родительским, а Example2 — дочерним, который вы хотите добавить с помощью этой кнопки.

3. Итак, вам нужно значение первичного ключа модели Example, которое является внешним ключом модели addexample?

4. да, точно 🙂

5. хорошо, и это только в вашем example.html что после того, как вы нажмете на ссылку, вы перейдете к другой форме для создания объекта addexample?

Ответ №1:

Попробуйте использовать item.pk , это должно быть то, на что ссылается внешний ключ. Вы можете добавить это значение в маршрут вашей кнопки, чтобы оно было известным значением на следующей странице, например, создайте маршрут /example2/{item.pk }

Комментарии:

1. конечно, но если я сохраню форму на своем example2.html как я могу получить этот ключ?

Ответ №2:

Я тоже новичок в django, я предположил, что вы уже создали URL и view для своего первого модуля (пример), попробуйте это в urls.py (URL-адрес, когда пользователь нажимает вашу кнопку)

 urlpatterns=[
path('addexample/<int:cats>/', Add, name= 'ADD'),
]
 

на example.html измените кнопку на

 <a class="btn btn-primary" href=""{% url 'ADD' example.user%}"" role="button">Link</a>
 

на views.py (для подключения модуля к html)

 def Add(request,cats):
    context ={
        'cats':cats,
        'all':example.objects.filter(user=cats)
    }

    return render(request,'new.html',context)
 

Теперь вам нужно создать new.html который будет содержать страницу, на которую будет перенесена кнопка, и вы можете указать предыдущую страницу forignkey по переменной (cats) и модуль для этого точного ключа по переменной (all)

Надеюсь, я вам помог

Комментарии:

1. и поэтому я могу получить ту же переменную при отправке формы на example2/…..html ?