如何建模从URL等获取值

问题描述 投票:-1回答:2

我有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的新人,我的英语水平很低。我希望你理解我

python django
2个回答
0
投票

您可能希望将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这样的字符串,将它们分成r12,然后将'12'转换为int。

然后在你的视图中找到匹配的记者(希望有一个):

reporter = Reporters.objects.get(id=r_id)

您可以使用以下命令创建文章:article = Article(content=content, reporter=reporter)


0
投票

通过跟随你的观点,我认为你只需要改变一点点;

if form.is_valid():
    article = form.save(commit=False)
    article.reporter = reporter        # here
    article.save()
    form.save()

    return redirect('ayar')
© www.soinside.com 2019 - 2024. All rights reserved.