我是Django的新手。我的博客页面上有多种用于不同计算的表格(例如Form1,Form2,Form3等)。 每个博客帖子(post / 1)在页面上都会有一个按钮,该链接带有一个链接,用于打开该帖子的特定表单模板(post_form.html)(例如post / 1 / form /),其中包含表单。 (Post1-Form1,Post2-Form 2,等等。)
有人可以帮助您实现此逻辑吗?如何更好地设置网址,模型和表格?
models.py
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
category = models.ForeignKey(Category , on_delete=models.CASCADE, default='Concrete')
author = models.ForeignKey(User , on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='calc_pics')
formId = models.IntegerField()
class L_section_prop_calc(models.Model):
name = models.CharField(max_length=100, unique=True)
tf = models.DecimalField(max_digits=5, decimal_places=3)
tw = models.DecimalField(max_digits=5, decimal_places=3)
height = models.DecimalField(max_digits=5, decimal_places=3)
urls.py
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
forms.py
class Calc_L_Section_Prop_Form(forms.ModelForm):
class Meta:
model = L_section_prop_calc
fields = ['tw','tf','height']
我不知道是否需要为每个表单创建一个模型。有更好的方法吗?
Thx
答案 0 :(得分:0)
这就是我的假设,因为您的问题很难理解。您有Post
个对象,每个对象都有一个相关的Calc_L_Section_Prop_Form
对象。您想要一个从/post/1/
到具有相关Calc_L_Section_Prop_Form
形式的页面的链接。
如果这是正确的,那么这就是我要这样做的方式。
在您的Calc_L_Section_Prop_Form
模型上添加一个字段,以将其连接到您的帖子。如果每个博客帖子仅进行一次计算,则可以使用OneToOneField
。您其余的模型都很好。
models.py
...
class L_section_prop_calc(models.Model):
post = models.OneToOneField(Post, models.CASCADE)
...
创建一个视图以处理用于计算的表格。
views.py
from django.shortcuts import get_object_or_404
...
class CalcUpdateView(generic.UpdateView):
fields = ['tw','tf','height']
model = L_section_prop_calc
def get_object(self):
return get_object_or_404(
self.get_queryset(),
post__pk=self.kwargs['pk'],
)
最后放入另一个path
以使用此视图。
urls.py
...
path('post/<int:pk>/form/', CalcUpdateView.as_view(), name='calc-update'),