我有2个带外键的模型
第一个模型是“Reporter”第二个模型是“文章”
我的文章添加页面网址是:IP:8000 / <Reporter-ID> / add_article /
我的文章模型是这样的:
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
我想在我的模板上,用户可以选择标题和pub_date,
但是记者会自动从URL等处填写。我该怎么做?
我的看法;
def addArticle(request,id):
reporter = get_object_or_404(Reporter,id=id)
form=AddArticle(request.POST or None)
if form.is_valid():
form.save()
return redirect('ayar')
context = {"form":form,"reporter":reporter}
return render(request, "add-article.html", context)
我的网址:
path('add-article/<int:id>/',addArticle,name="addArticle"),
我是Django的新人,我的英语水平很低。我希望你理解我
您可能希望将URL作为参数抓取并将其传递给“视图”。
您的应用应该有一个urls.py,其中包含url_patterns列表。此列表中的条目可能是这样的(我在记者ID之前添加了'r',否则此路径将匹配任何int - 只是一个选择。)
# urls.py
url_patterns = [
path('r<int:r_id>/add_article/', views.Add_article.as_view(), name='add_article'),
]
那个'r'将捕获像r12这样的字符串,将它们分成r
和12
,然后将'12'转换为int。
然后在你的视图中找到匹配的记者(希望有一个):
reporter = Reporters.objects.get(id=r_id)
您可以使用以下命令创建文章:article = Article(content=content, reporter=reporter)
通过跟随你的观点,我认为你只需要改变一点点;
if form.is_valid():
article = form.save(commit=False)
article.reporter = reporter # here
article.save()
form.save()
return redirect('ayar')