我有个小问题。我想在列表中只显示属于添加它的用户的记录。在我的应用程序中,当我以“用户”身份登录并想添加新记录(包括列表中的记录)时,我会从ForeignKey看到db中的所有记录。如何正确制作?
在“Strona www”中,当我展开列表时,我会看到所有记录,而不仅仅是用户个人添加的记录。 我的观点是:
@login_required
def new_keyword(request):
if request.method == "POST":
new_keyword = KeywordForm(request.POST)
if new_keyword.is_valid():
new_keyword=new_keyword.save(commit=False)
new_keyword.user = request.user
new_keyword.save()
messages.success(request, 'Pomyślnie dodano słowo kluczowe')
return render(request, 'konto/new_keyword_ok.html')
else:
new_keyword = WebsiteForm()
return render(request, 'konto/new_keyword.html', {'new_keyword':new_keyword})
在表单中.py我有:
class KeywordForm(forms.ModelForm):
class Meta:
model = Keyword
fields = ('www', 'keyword')
型号.py
class Keyword(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Użytkownik")
www = models.ForeignKey(Website, on_delete=models.CASCADE, verbose_name="Strona www")
keyword = models.CharField(max_length=250, verbose_name="Słowo kluczowe", unique=False)
url.py
path('new-keyword/', new_keyword, name='new_keyword'),
而html用于显示的表单是:
{% if request.user.is_authenticated %}
<form action="." method="post">
{{ new_keyword.as_p }}
{% csrf_token %}
<p><input type="submit" value="Dodaj nowe słowo kluczowe" ></p>
<a href="{% url 'dashboard' %}">Powrót do monitoringu</a>
</form>
{% endif %}
编辑:
型号.py
from django.db import models
from django.contrib.auth.models import User
class Website(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Użytkownik")
website = models.CharField(max_length=250,verbose_name='Strona www', unique=False)
class Meta:
verbose_name = 'Strona www'
verbose_name_plural = 'Strony www'
def __str__(self):
return self.website
class Keyword(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="Użytkownik")
www = models.ForeignKey(Website, on_delete=models.CASCADE, verbose_name="Strona www")
keyword = models.CharField(max_length=250, verbose_name="Słowo kluczowe", unique=False)
class Meta:
verbose_name = 'Słowo kluczowe'
verbose_name_plural = 'Słowa kluczowe'
def __str__(self):
return self.keyword
将
request.user
传递给表单并使用反向关系user.website_set
:表格:
视图:
作为旁注:在成功发布you want to redirect(即使发送到相同的url)之后。这样就避免了用户重新加载页面时的许多麻烦(以及重复提交)
只需将用户id传递给表单,然后为字段设置查询集
像这样:
如何将用户传递到表单:
在你看来:
如何在表单中检索用户并设置查询集:
表单.py:
相关问题 更多 >
编程相关推荐