Tôi có một hình thức mà tôi xác nhận trong phương pháp sạch cho dù một đối tượng ProjectMembership đã tồn tại, có cùng giá trị cho dự án và thành viên . Điều này là do tôi có trong mô hình ProjectMembership đã định nghĩa ràng buộc unique_together cho dự án và thành viên. Điều này hoạt động tốt thực sự.django - làm thế nào để kiểm tra trong một phương pháp sạch của một hình thức cho dù đó là một chèn hoặc cập nhật
class ProjectMembershipForm(forms.ModelForm):
project = forms.ModelChoiceField(Project.objects, widget=HiddenInput())
class Meta:
model = ProjectMembership
def clean(self):
cleaned_data = self.cleaned_data
project = cleaned_data.get("project")
member = cleaned_data.get("member")
print ProjectMembership.objects.filter(project=project, member=member).count()
if ProjectMembership.objects.filter(project=project, member=member).count() > 0:
del cleaned_data["project"]
del cleaned_data["member"]
raise forms.ValidationError('The user "%s" is already part of the project team for project "%s".' % (member, project))
return cleaned_data
Nhưng bây giờ tôi tự hỏi làm cách nào để có thể đánh giá mối quan hệ mới hoặc cập nhật mối quan hệ. Bởi vì với phương pháp sạch này, bạn không thể cập nhật, vì nó trả về thông báo lỗi rằng mục nhập đã tồn tại.
Bạn đã tìm thấy một giải pháp cho điều này? Đang cố gắng làm tương tự bản thân mình, nhưng không thể tìm thấy một giải pháp. – espenhogbakk
Không có giải pháp nào. Tôi chỉ sử dụng hai hình thức bây giờ, một cho việc cập nhật và một cho chèn. Trong biểu mẫu cập nhật, bạn phải tắt các trường duy nhất cùng nhau để đảm bảo bạn không vi phạm ràng buộc này. Cách tiếp cận này có bất lợi là bạn không thể cập nhật các trường có ràng buộc cùng nhau duy nhất .. –