Monday, March 9, 2015

Re: FORM: How to specify current user as value for a form ForeignKey referencing logged on user

El 08/03/15 14:40, Ryan Alexander escribió:
Hey there,

This seems like something that should be simple to do but I'm having a heck of a time with it and google searches don't reference anything that's helping me out.

I have a form that a user fills out, and it creates a db row based on the input.  Model as below:

class Accounts(models.Model):
authid = models.CharField(max_length=128)
authtoken = models.CharField(max_length=128)
provider = models.ForeignKey(Provider)
user = models.ForeignKey(User, unique=True)

How do I feed the current user value to the form?  Form code:

class AccountForm(forms.ModelForm):
 provider = forms.ModelChoiceField(queryset=Provider.objects.all(), help_text="Provider")
 authid = forms.CharField(max_length=256, help_text="AuthID")
 authtoken = forms.CharField(max_length=256, help_text="AuthToken")
  user = ????
If you are using a class based view like CreateView you can set the current user in the form_valid method like this:

def form_valid(self, form):
    form.instance.user = self.request.user

Furthermore you don't need to define a modelform when using CreateView.


No comments:

Post a Comment