Django PreviewForm - как добавить набор запросов в поле? - PullRequest
0 голосов
/ 17 июня 2020

Я использую formtools (https://github.com/jazzband/django-formtools), чтобы предварительно просмотреть данные формы перед их отправкой. Ниже приведен код, над которым я работаю.

models.py

class Invoice(Model):
    issue_date = DateField()
    due_date = DateField()
    description = CharField(max_length=200)
    project = ForeignKey(Project, on_delete=CASCADE)
    currency = CharField(max_length=3, choices=CURRENCY_CHOICES, default='eur')
    amount = DecimalField(blank=True, null=True, max_digits=100, decimal_places=2)

preview.py

class InvoiceFormPreview(FormPreview):
    def done(self, request, cleaned_data):
        invoice = Invoice.objects.create(**cleaned_data)
        success_url = reverse("finance:list-invoices")
        return HttpResponseRedirect(success_url)

urls.py

path('invoice/', InvoiceFormPreview(InvoiceForm)),

С помощью обычного ModelForm я могу добавить набор запросов к внешнему ключу Project, чтобы отображать только те проекты, которые принадлежат зарегистрированному пользователю, например,

class InvoiceForm(ModelForm):
    def __init__(self, user, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['project'].queryset = Project.objects.filter(projectuser__user=user.id)

Как бы я go добавил, что self.fields.... на InvoiceFormPreview? Похоже, что существует метод get_initial, доступный для использования, но не уверен, как он работает

...