Reputation: 29
I want to assign the profile instance automatically to order, I tried as shown in views, but still form error shows profile required. Hope somebody can help, Thank you.
models.py
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
first_name = models.CharField(max_length=80,blank=True, null=True)
middle = models.CharField(max_length=80, blank=True, null=True)
last_name = models.CharField(max_length=80, blank=True, null=True)
class Order(models.Model):
profile = models.ForeignKey(Profile)
qty_ordered = models.IntegerField(blank=True, null=True)
views.py
class OrderCreate(CreateView):
model = Order
form_class = OrderForm
success_url = reverse_lazy('home')
def form_valid(self, form):
form.instance.order_id = self.kwargs.get('pk')
return super(OrderCreate, self).form_valid(form)
order_form.html
<form method='POST' action='' enctype='multipart/form-data'>{% csrf_token %}
{{ form.qty_ordered| as_crispy_field }}
<input type='submit' class='btn btn-primary' value='Save & Continue' />
Upvotes: 0
Views: 1306
Reputation: 6096
Try adding the following inside the form_valid
method.
def form_valid(self, form):
# ...
profile = Profile.objects.get(user=self.request.user) # or something similar
form.instance.profile = profile
# return the super as you do
Upvotes: 1