如何建模从URL等获取值

时间:2019-04-30 23:14:00

标签: python django

我有2个带有外键的模型

第一个模型是“记者” 第二个模型是“文章”

我的文章添加页面网址为:IP:8000 / << strong> 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的新手,我的英语水平很低。我希望你能理解我

2 个答案:

答案 0 :(得分: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”转换为整数。

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

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

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

答案 1 :(得分:0)

按照您的观点,我认为您只需要一点改变;

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

    return redirect('ayar')