django - Django将外键字段添加到generic.CreateView
问题描述
在此先感谢,我正在学习 django 并制作一个投票项目,我想要实现的是让用户创建一个问题 + 添加一些答案选项,所以我有一个基于问题类的视图和一个选项
class Question(models.Model):
id = models.AutoField(
primary_key=True)
author = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
question_text = models.CharField("Question", max_length=200)
pub_date = models.DateTimeField(
"date de publication", default=timezone.now)
popularity = models.IntegerField("popularité", default=0)
def __str__(self):
return self.question_text
class Choice(models.Model):
question_lie = models.ForeignKey(
Question, to_field="id", null=True, blank=True, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
我的创建视图:
class CreatePoll(LoginRequiredMixin, generic.CreateView):
model = Question
fields = ["question_text"]
template_name = "polls/create_poll.html"
success_url = "/polls"
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
实际上,用户可以只提供一个没有答案的问题,在管理部分我设法这样做:
class ChoiceInLine(admin.TabularInline):
model = Choice
extra = 1
class QuestionAdmin(admin.ModelAdmin):
...
inlines = [ChoiceInLine]
有没有类似的方法?谢谢阅读
编辑:我发现 django-extra-view 模仿了管理员的方式来做到这一点,但是有没有本地的方式来做到这一点?
解决方案
可以使用inlineformset_factory实现和 Django admin 一样的效果
推荐阅读
- python - 从 groupby 数据框创建数据框
- java - 如何检查方法的通用返回类型是否与通过参数传递的类匹配?
- c# - 当要查找的字符串具有不同的空格时提取子字符串
- django - 如何从 django admin 中删除关于覆盖删除查询集方法的默认删除确认消息?
- powershell - 在运行脚本之前检查多个文件路径是否存在
- css - 如何将 vuetify 日期选择器放在其他组件的前面?
- angular - Checkbox 选中事件在 ionChange 上被触发两次
- ios - 停止一个永远运行的动作,运行另一个动作并在 SpriteKit 中恢复停止的动作
- html - 如何在短文本时屏幕居中,但在长文本时使其与左侧的另一个元素对齐?
- java - 无法理解为什么代码违反了单一责任原则(在 Robert C. Martin 的“干净代码”一书中)