Django模型形式更新don';行不通
嗨,我对模型表单有问题。当我尝试使用事务从两个类中更新对象时,什么也没有发生 我的班级:Django模型形式更新don';行不通,django,transactions,django-forms,Django,Transactions,Django Forms,嗨,我对模型表单有问题。当我尝试使用事务从两个类中更新对象时,什么也没有发生 我的班级: class TeamForm(forms.ModelForm): employers = forms.ModelMultipleChoiceField(queryset=Employer.objects.all(), widget=forms.CheckboxSelectMultiple) class Meta: model = Team fields =
class TeamForm(forms.ModelForm):
employers = forms.ModelMultipleChoiceField(queryset=Employer.objects.all(), widget=forms.CheckboxSelectMultiple)
class Meta:
model = Team
fields = '__all__'
我的模型课:
class Team(models.Model):
name = models.CharField(default='Team', max_length=100, unique=True)
def __str__(self):
return self.name
class Employer(models.Model):
user = models.OneToOneField(User, on_delete=models.SET_NULL, null=True)
team = models.ForeignKey(Team, on_delete=models.SET_NULL, null=True)
team_leader = models.BooleanField(default=False)
project_menager = models.BooleanField(default=False)
# project_id = models.ForeignKey(Project, on_delete=models.SET_NULL, null=True)
hourly_rate = models.IntegerField(default=0)
working_time = models.FloatField(default=0.0)
def __str__(self):
return self.user.first_name + ' ' + self.user.last_name
最后,我的观点是:
def TeamUpdateView(request, pk):
if request.method == 'POST':
team_form = TeamForm(request.POST)
if team_form.is_valid():
with transaction.atomic():
team = Team.objects.filter(pk=pk).update(name=str(team_form['name'].value()))
for e in team_form['employers'].value():
Employer.objects.filter(pk=e).update(team=team)
print(team_form.errors)
return redirect('resources:ResourcesListView')
else:
team = get_object_or_404(Team, pk=pk)
team_form = TeamForm(initial={'name': team.name}) # milestone_form = MilestoneForm()
context = {'team_form': team_form, 'form_pk': pk} # , 'milestone
return render(request, 'resources/resources_edit_modal.html', context)
当我打印表单错误时,我可以看到如下情况:
<ul class="errorlist"><li>name<ul class="errorlist"><li>Team with this Name already exists.</li></ul></li></ul>
- 名称
- 具有此名称的团队已存在。
看起来您有一些格式问题-我猜这只是在发布SO?时出现的,只有在我尝试发送post请求时才会出现