Django: создать вид встроенного общего вида обновления - PullRequest
0 голосов
/ 24 октября 2018

Я работаю над 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 откуда он был вызван.Но только когда его оттуда звали?

Спасибо за любые предложения!

1 Ответ

0 голосов
/ 24 октября 2018

Да, вы можете создать 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

...