【问题标题】:Django: create view inline generic update viewDjango:创建视图内联通用更新视图
【发布时间】:2018-10-24 15:35:59
【问题描述】:

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

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 中创建所有者? (不在管理页面中)

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

感谢您的任何建议!

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-10
      • 2022-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2017-11-25
      相关资源
      最近更新 更多