In my project each user can have multiple enemies, like this:
models
class EnemyModel(models.Model): name = models.CharField(max_length=128) weapon = models.CharField(max_length=128) related_user = models.ForeignKey(UserProfile) class UserProfile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) Only user can add enemies to his profile, so I made a form like this:
forms
class AddEnemyForm(forms.ModelForm): class Meta: model = EnemyModel exclude = ['related_user'] # only current user My idea was to modify the excluded field in a view, but it doesn't work:
views
def add_enemy(request): args={} if request.method == "POST": form = AddEnemyForm(request.POST) form.related_user = request.user # error # form.related_user_id = request.user.id # also error if form.is_valid(): form.save() return HttpResponse("<h1>Done!</h1>") else: args.update(csrf(request)) args["form"]=form return render_to_response("add_enemy.html",args) args.update(csrf(request)) args["form"]=AddEnemyForm() return render_to_response("add_enemy.html",args) How to modify a form before save?