I'm having trouble saving data for an intermediate field. I have forms (unlisted here) to create Stocks and Portfolios. Now I am trying to build a Membership form to link the two. I followed the django documentation and the code works perfectly in the the API. Then in the views, I can the membership to save fine (I pulled it up in the API afterwards to check), but it doesn't make the make the connection between the Stock and Portfolio. After the membership form, there is a membership object saved in my database but it is not connecting the portfolio to the stock.
Thanks in advance.
Here are my models:
class Stock(models.Model):
name = models.CharField(max_length=160)
ticker = models.SlugField(max_length=20)
created = models.DateTimeField(auto_now_add=True, blank=True)
class Portfolio(models.Model):
name = models.CharField(max_length=160)
stocks = models.ManyToManyField(Stock, through='Membership')
class Membership(models.Model):
stock = models.ForeignKey(Stock)
portfolio = models.ForeignKey(Portfolio)
shares = models.IntegerField(default=0)
class StockForm(forms.ModelForm):
class Meta:
model = Stock
exclude = []
class PortfolioForm(forms.ModelForm):
class Meta:
model = Portfolio
exclude = []
class MembershipForm(forms.ModelForm):
class Meta:
model = Membership
exclude = []
And here are my views.py:
def membership_form(request):
if request.method == 'POST':
form = MembershipForm(request.POST, request.FILES)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.save()
membership = Membership.objects.create( portfolio=new_obj.portfolio ,stock=new_obj.stock)
membership.save()
return HttpResponseRedirect(reverse('portfolios', args=[]))
else:
form = MembershipForm(None)
return render(request, 'portfolio/form.html', {'form': form})
I based the views off Django m2m form save " through " table .