Django:创建视图内联通用更新视图

时间:2018-10-24 15:35:59

标签: python django django-forms django-generic-views

我正在使用Django 1.11。我有两个模型,第一个有这样的外键:

;extension=php_mysqli.dll

我使用class Book(models.Model): name=models.CharField(max_length=100) owner = models.ForeignKey(Owner, on_delete=models.PROTECT, null=True, default=None) other_properties class Owner(models.Model): some_property 更新我的图书:

generic.UpdateView

这可行,但现在我想从class BookUpdateView(generic.UpdateView): model = Book fields = ['owner'] 页创建一个所有者,然后修改该书以将所有者属性设置为新创建的所有者。

是否可以使用内联表单在BookUpdateView内创建所有者? (不在管理页面中)

或者为所有者拥有一个单独的创建视图,该视图从调用位置重定向到BookUpdateView。但是只有当它从那里被调用时?

谢谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

是的,您可以使用Owner方法在BookUpdateView内创建form_valid()。表单有效时执行此方法。

class BookUpdateView(generic.UpdateView):
    model = Book
    fields = ['owner']
    def form_valid(self,form):
        owner = Owner.objects.create(define_some_property)
        .......
        return super(BookUpdateView, self).form_valid(form)

您可以参考文档-https://docs.djangoproject.com/en/2.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin.form_valid