[英]How to update multiple objects with one form in Django?
我创建了一个客户 model 和一个 function 用于将客户分配给用户。 分配 function 是Customer
model 中的更新user
字段。
此Customer
model 具有country
/地区字段。 我想将同一国家/地区的客户分配给具有一种形式的用户。 为此,我列出了所有国家和分配操作的表格? 我怎样才能做到这一点?
编辑:现在,我可以获得国家名称和分配用户。 如何使用这些属性并使用所选国家和用户更新对象( Customer
)。
模型.py
class Customer(models.Model):
customer_name = models.CharField(max_length=20)
country = models.ForeignKey(Country, on_delete=models.CASCADE, null=True, unique=False)
...
user = models.ForeignKey(UserProfile, on_delete=models.CASCADE, blank=True, null=True)
class Country(models.Model):
REGION = [
('Northwest Europe', 'Northwest Europe'),
('Southwest Europe', 'Southwest Europe'),
...
]
country_name = models.CharField(max_length=30)
country_code = models.CharField(max_length=5)
视图.py
def country_customer_list(request):
current_user = request.user
userP = UserProfile.objects.get_or_create(username=current_user)
customer_list = Customer.objects.filter(company=userP[0].company)
countries = Customer.objects.values_list('country__country_name', flat=True).distinct()
form = CountryForm(request.POST or None)
if request.POST:
country_form = request.POST.get('country_form', None)
user = request.POST.get('user', None)
form.save()
print(country_form)
print(user)
return redirect('user:customer_countries')
context = {
'customer_list': customer_list,
'countries': countries,
'form': form
}
return render(request, 'country_customer_list.html', context)
country_customer_list.html *
<table id="multi-filter-select" class="display table table-striped table-hover grid_" >
<thead>
<tr>
<th>Country</th>
<th>Operations</th>
</tr>
</thead>
<tbody>
{% for country in countries %}
<tr>
<td>{{country}}</td>
<td>
<button type="button" class="btn btn-info btn-block" data-toggle="collapse" data-target="#demo{{ forloop.counter }}"> Assign </button>
<div id="demo{{ forloop.counter }}" class="collapse">
<form method="post">
{% csrf_token %}
{{ form|crispy }}
<input type="hidden" name="country_form" value="{{ country }}">
<button type="submit" class="btn btn-primary btn-sm">Assign</button>
</form>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
forms.py
class CountryForm(forms.ModelForm):
class Meta:
model = Customer
fields = ('user',)
使用您的选择填充国家模型,它们将出现在模板中
更改模型
class Country(models.Model):
country_name = models.CharField(max_length=30)
country_code = models.CharField(max_length=5)
def __str__(self):
return str(self.country_name) + ' ' + str(self.country_code)
forms.py
class CountryForm(forms.ModelForm):
class Meta:
model = Customer
fields = ('user','country',)
在模板中
{{form.country}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.