django - django - 如何在详细视图中创建表单
问题描述
我正在使用 Django 创建一个在线辩论应用程序。我使用基于类的列表视图来创建不同pk
的主题,一旦我单击主题,它会将我带到其详细信息页面,一旦我进入详细信息页面,我需要两个文本框来输入我的支持点和反对点输入点后,我需要在文本框下方显示点。我已经创建了一个主题列表,但我无法在该特定页面上添加文本框。
这是我的models.py
class DebateModel(models.Model):
title = RichTextUploadingField(blank=True,null= True)
body = models.TextField(max_length = 5000 , null=True,blank=True)
date_published = models.DateTimeField(auto_now_add=True)
date_update = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
class ForModel(models.Model):
DebateModel = models.ForeignKey(DebateModel,related_name="for_point",on_delete=models.CASCADE)
body = models.TextField(max_length = 5000)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s %s' % (self.DebateModel.title, self.body)
class AgainstModel(models.Model):
DebateModel = models.ForeignKey(DebateModel,related_name="against_point",on_delete=models.CASCADE)
body = models.TextField(max_length = 5000)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '%s %s' % (self.DebateModel.title, self.body)
这是我的forms.py
class EditFor(forms.ModelForm):
class Meta:
model = ForModel
fields = ('body',)
widgets = {
'body': forms.Textarea(attrs={'class':'form-control'}),
}
这是我的意见.py
class HomeView(ListView):
model = DebateModel
template_name = "debate/home.html"
class ArticleDetailView(DetailView):
model = DebateModel
template_name = "debate/content.html"
context_object_name = 'debate'
class AddForView(CreateView):
model = ForModel
template_name="debate/content.html"
form_class = EditFor
def form_valid(self,form):
form.instance.DebateModel_id = self.kwargs['pk']
return super().form_valid(form)
success_url = reverse_lazy('debate/home.html')
这是我的 urls.py
path('',HomeView.as_view(),name = "home"),
path('article/<int:pk>',ArticleDetailView.as_view(),name = "debate-detail"),
path('article/<int:pk>/forpoint',AddForView.as_view(),name="add_For"),
这是我的 content.html
<button onclick="myFunction()">for</button>
<button onclick="myFunction()">against</button>
<form method="post" action="Add_For/">
{%csrf_token%}
</form>
<script>
function myFunction() {
var x = document.createElement("TEXTAREA");
var t = document.createTextNode("enter your for point");
var y = document.createElement("INPUT");
y.setAttribute("type", "submit");
document.body.appendChild(y);
x.appendChild(t);
document.body.appendChild(x);
}
</script>
解决方案
推荐阅读
- apache-flink - PyFlink - Kafka - 缺少模块
- c# - 如何从一个表中获取 Id 并将其保存到 ASP.NET Core 中的另一个表,存储库模式
- python - Python Cleaning CSV
- java - 将类的arraylist写入excel java
- javascript - Javascript Student - Question - Grade Calculator
- docker - Permission denied error from Docker container in Snakemake
- python-3.x - pandas help: map and match tab delimted strings in a column and print into new column
- javascript - How to get a sibling element by class name upon button click?
- python - 如何在 python 中使用 plotly 和 make_subplot 绘制不同类型的图表
- c++ - 如何在谷歌测试中模拟响应?