#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 ?