python - 使用从 URL 获取的数据填写 Django 表单
问题描述
我想通过我通过 url 获得的表单创建一个新的谬误(参见 models.py)path('<slug:slug_tree>/new/', views.CreateFallacyView.as_view(), name='create_fallacy'),
。所以用户在TreeDetailView
(对应于某棵树)上,他可以在这棵树上添加一个新的谬误。用户应输入标题和详细信息,但应在代码中分配树(外键)。它应该被分配给相应的树,他从该树被定向到 CreateFallacyView。树的块在 URL 内,所以我想我可以以某种方式使用该信息,但我不知道如何继续使用该信息。任何帮助表示赞赏!或者可能还有其他更优雅的解决方案?
非常感谢!
模型.py
class Tree(models.Model):
title = models.CharField(max_length=50)
detail = models.TextField()
slug = models.SlugField(allow_unicode=True, unique=True, null=True, blank=True)
class Fallacy(models.Model):
title = models.CharField(max_length=50)
detail = models.TextField()
tree = models.ForeignKey(Tree, related_name='fallacy', on_delete=models.CASCADE)
视图.py
class CreateFallacyView(generic.CreateView):
form_class = forms.FallacyForm
表格.py
class FallacyForm(forms.ModelForm):
class Meta:
model = models.Fallacy
fields = ('title', 'detail')
网址.py
app_name = 'argtree'
urlpatterns = [
path('', views.TreeListView.as_view(), name='all'),
path('<slug:slug_tree>/', views.TreeDetailView.as_view(), name='tree_detail'),
path('<slug:slug_tree>/new/', views.CreateFallacyView.as_view(), name='create_fallacy'),
解决方案
在CreateFallacyView
您可以将其链接到方法 [Django-doc]Tree
中的给定方法:.form_valid(…)
from django.shortcuts import get_object_or_404
class CreateFallacyView(generic.CreateView):
form_class = forms.FallacyForm
def form_valid(self, form):
tree = get_object_or_404(Tree, slug=self.kwargs['slug_tree'])
form.instance.tree = tree
return super().form_valid(form)
推荐阅读
- javascript - 为每第 n 个数据元素 d3.js 添加一个圆圈
- react-native - 如何在 React Native 中将弹出窗口限制为单个屏幕?
- arrays - 使用 moment.js 库按日期对数组中的对象进行分组
- docker - 尝试更改从主机挂载的配置文件时,在 docker 容器启动期间 chown 失败
- excel - 使用带有 Ranges 数组的 Consolidate 函数
- julia - 尝试添加不同类型的数量时出现 MethodError
- android - 访问 android 模拟文件系统调试颤振
- java - 在将 ArrayList 设置和重置为 HashMap 中的值时找不到方向
- elixir - elixir phoenix - put_flash/3 在插件中
- ruby-on-rails - Date.to_formatted_s() 似乎不像宣传的那样工作