我有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的新手,我的英语水平很低。我希望你能理解我
答案 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的字符串,将其拆分为r
和12
,然后将“ 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')