django - how to check in a clean method of a form whether it is an insert or an update -


I have a form where I clearly agree that a project ambership object already exists, whose project There is equal value for the member. This is the reason that I have defined the unique_tagent barrier for the project and member in the Project Membership model. It actually works fine.

ProjectMembershipForm (forms.ModelForm): Project = forms.ModelChoiceField (Project.objects, Widget = HiddenInput ()) Category Meta: Model = ProjectMembership def Clean ( Self): cleaned_data = self. Cleaned_data project = cleaned_data.get ("project") member = cleaned_data.get ("member") print project membershiphip.objects.filter (project = project, member = member) .count () if ProjectMembership.objects.filter (project = project , Members = members). Calculate ()> 0: del cleared_data ["project"] del cleared_data ["member"] increase the forms. Validation Error (User '% s' is already part of the project team for project "% s".'% (Member, Project)) Return Clean-Dta

But now I'm asking myself how can I decide how well the user tries to make a new relationship or update the relationship. Because it is not possible to update this clearly, because this error message indicates that the entry already exists

< P> You can try to change it:

  If ProjectMembership.objects Filters (Project = Project, Member = Member). Calculate ()> 0:  

To do something like this:

  If ProjectMembership.objects.filter (project = project, member = member) .exclude (pk = self Instance.id) .Count ()> 0:  

Actually you need to know if you do not own it before using it to take it out. There is no one, but hopefully this little snippet has given you some idea how your task can be completed without duplicating the form.


Comments

Popular posts from this blog

oracle - The fastest way to check if some records in a database table? -

php - multilevel menu with multilevel array -

jQuery UI: Datepicker month format -