如何从另一个不同的ModelForm获取数据



是否可以将搜索中的数据自动填充到两个不同的ModelForm?我想做的是当我";搜索";使用GET方法,它在查询之后显示资产的详细信息。该页面显示了资产细节;分配";按钮时;asset_ id";并转到下一个HTML创建表单(LoanerForm(。我的问题是,在LoanerForm上;asset_number";。我不明白为什么,pk是正确的,我把它作为实例传递到表单上;asset_number;仍然是默认的选择选项。

我的观点:

def loaner_view_page(request):
asset = request.GET.get('q')
my_asset = Asset.objects.filter(asset_number=asset)
print('Printing results', request.GET)
context = {
'asset':my_asset,
}
return render(request, 'assets/asset_loaner_page.html', context)
def loaner_assign(request, pk):
asset = Asset.objects.get(id=pk)
form = LoanerForm(instance=asset)
if form.is_valid():
print('Printing results', request.POST)
form.save()
return redirect('/Dashboard/')
context = {
'form': form,
}
return render(request, 'assets/asset_loaner_assign.html', context)

我的型号:

class Asset(models.Model):
model_item = models.ForeignKey(Model_Items, null=True, on_delete= models.SET_NULL)
po_number = models.ForeignKey(Po, null=True, on_delete= models.SET_NULL)
asset_number = models.CharField(max_length=10, default='')
serial_number = models.CharField(max_length=10, default='')
asset_location = models.ForeignKey(Location, null=True, on_delete= models.SET_NULL)
asset_type = models.CharField(max_length=10, default='')#primary device owner/loaner
def __str__(self):
return self.asset_number
class Loaner(models.Model):
loaner = models.ForeignKey(Asset, null=True, on_delete= models.SET_NULL)
return_date = models.DateField(auto_now_add=False)
asset_type = models.CharField(max_length=10, default='')

我的HTML:

{% for my_asset in asset %}
<tr>
<td>{{ my_asset.asset_number }}</td>
<td>{{ my_asset.id }}</td>
<td>{{ my_asset.serial_number }}</td>
<td>{{ my_asset.asset_location }}</td>
<td>{{ my_asset.asset_type }}</td>
<td><a class="btn btn-primary  btn-sm btn-block" href="{% url 'asset_loaner_assign' my_asset.id %}">Assign</a> </td>
{% endfor %}
</tr>

我的表单:

class AssetForm(ModelForm):
class Meta:
model = Asset
fields = ('__all__')

class LoanerForm(ModelForm):
class Meta:
model = Loaner
fields = ('__all__')

我的URL:

path('Asset_Loaner/', loaner_view_page, name="asset_loaner"),
path('Asset_Loaner_Assign/<str:pk>/', loaner_assign, name="asset_loaner_assign"),
form = LoanerForm(initial={'loaner': pk})

通过使用initial而不是instance修复了它。

最新更新