django - DJANGO:在一个基于类的视图中保存两个表单
问题描述
我很难在一个视图中保存 2 个表单,唯一的第一个正在保存,但我不知道如何保存第二个。这是我的代码和问题:
模型.py
class Office(models.Model):
name = models.CharField(max_length=100,null=True)
Address = models.ForeignKey(Address, on_delete=models.CASCADE, related_name='officeAddress',blank=True,null=True)
def __str__(self):
return self.name
class Address(models.Model):
address_line = models.CharField(max_length=60, blank=True)
address_line2 = models.CharField(max_length=60, blank=True)
country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name='District')
province=ChainedForeignKey(Province,chained_field="country",chained_model_field=
"country",show_all=False,auto_choose=True,sort=True)
district=ChainedForeignKey(District,chained_field="province",
chained_model_field="province",show_all=False,auto_choose=True,sort=True)
class Meta:
verbose_name = "Address"
verbose_name_plural = "Addresses"
表格.py
class OfficeModelForm(BSModalModelForm):
class Meta:
model = Office
fields = ['name']
class AddressForm(forms.ModelForm):
class Meta:
model = Address
fields = ['address_line','address_line2','country','province','district']
视图.py
class OfficeCreateView(BSModalCreateView):
form_class = OfficeModelForm
second_form_class = AddressForm
template_name = 'settings/create_office.html'
success_message = 'Success: Office was created.'
success_url = reverse_lazy('company:office-list')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['address'] = self.second_form_class
return context
create_office.html
{% load static i18n %}
{% load widget_tweaks %}
<form method="post" action="" enctype="multipart/form-data">
{% csrf_token %}
{{ address.media.js }}
<div class="modal-body">
<div class="form-group">{% render_field form.name %}</div>
<div class="form-group">{% render_field address.address_line %}</div>
<div class="form-group">{% render_field address.address_line2 %}</div>
<div class="form-group">{% render_field address.country %}</div>
<div class="form-group">{% render_field address.province %}</div>
<div class="form-group">{% render_field address.district %}</div>
<button class="btn btn-primary ms-auto" type="submit">{% trans "Create new office" %}</button>
</div>
</form>
我想我需要先保存地址,然后使用 address.id 作为办公室的外键,但我不知道如何在 CBV 中执行此操作。谢谢你的帮助...
解决方案
推荐阅读
- c++ - 为什么编译器允许静态结构?
- java - 在 Intellij 中打开 Javafx 模块到 Gson 模块
- mongodb - 如何使用聚合管道处理大型集合并无限制地返回所有结果?
- spring - 如何在 Spring MVC 前端监控服务器端事件?
- python - AssertionError:视图函数映射正在覆盖现有端点函数:包装器
- php - 从 PHP 中的单个循环回显到分离的 html 部分
- django - Django rest 框架 + 简单 JWT - 始终启用权限类
- c# - 向 blazor 中的表格添加 onclick 事件,表格由 for 循环创建
- javascript - 状态未定义 no - 反应类组件中的 undef
- angular - 如何将时区附加到 Datepipe 的转换函数?