如何解决Django:将新的寄存器添加到数据库后,更新表单中的manytomany下拉菜单
我希望足够清楚。
我有一个与ForeignKey关联到Deal模型的Campaign模型。创建新的广告系列时,我必须从下拉菜单中选择交易,也可以按+按钮创建新交易。单击此+按钮将打开一个新窗口,您可以在其中创建和保存交易。 关闭此窗口并返回到“创建广告系列”窗口,如果刷新页面后未显示新交易,则下拉菜单中不会显示新交易(这会导致之前填写的所有字段都丢失)。
如何复制管理员行为?在管理面板中创建交易后,广告系列下拉列表会自动使用新交易进行更新。
我的简化模型。py:
class campaign(models.Model):
Deal = models.ForeignKey(deal,on_delete=models.CASCADE,null=True)
Name_Campaign = models.TextField(max_length=50,null=True,blank=True)
class deal(models.Model):
Deal = models.TextField(max_length=50,blank=True)
我的简化表格。py
class create_campaign(ModelForm):
Name_Campaign = forms.CharField(
widget=forms.TextInput(
attrs={
"placeholder": "Insert the Campaign Name","class": "form-control"
}
))
Deal = forms.ModelChoiceField(queryset=deal.objects.filter(Deal_Type='Father'))
class Meta:
model = campaign
fields = ['Name_Campaign','Deal']
class create_deal(ModelForm):
Deal = forms.CharField(
widget=forms.TextInput(
attrs={
"placeholder": "Insert the Deal","class": "form-control"
}
))
class Meta:
model = deal
fields = ['Deal']
我的简化views.py:
class CampaignCreateView(SuccessMessageMixin,CreateView):
model = campaign
template_name = 'campaign/create_campaign.html'
form_class = create_campaign
def get_success_url(self):
return reverse('list_campaign')
class DealCreateView(SuccessMessageMixin,CreateView):
model = deal
template_name = 'campaign/create_deal.html'
form_class = create_deal
def get_success_url(self):
return reverse('list_deal')
create_campaign.html模板,我要求在其中选择交易或创建一个新交易,以打开新窗口:
<div class="fieldWrapper">
<label for="{{ form.Deal.id_for_label }}">Deal</label>
{{ form.Deal.errors }}
{{ form.Deal }}
<a id="over_table" href="/campaign/create_deal" target='_blank' class="material-icons">add_circle_outline</a>
</div>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。