我正在开展一个项目,我有一个叫做投资的课程。基本上,用户可以有很多投资,投资可以由许多用户组成。因此我的models.py看起来像这样:
# Not sure if this class is relevant to my question
class UserProfile(models.Model):
user = models.OneToOneField(User)
first_name = models.CharField(max_length=24)
last_name = models.CharField(max_length=24)
phone_number = models.CharField(max_length=12)
account_type = models.CharField(max_length=55, choices=ACCOUNT_TYPES)
def __str__(self):
return self.user.username
class Investment(models.Model):
user = models.ForeignKey(User)
offered_fund = models.ForeignKey(OfferedFunds)
amount = models.IntegerField(default=0)
purchase_date = models.DateTimeField(auto_now_add=True)
def __int__(self):
return self.offered_fund.fund_name.name
和我的forms.py:
class InvestmentForm(forms.ModelForm):
class Meta:
model = Investment
fields = ('offered_fund','amount')
exclude = ['user']
最后,我的views.py:
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
因此,部署时的工作方式是用户选择offer_fund,输入金额然后点击提交。当我这样做一次时,它会注册,我可以在Django Administration页面中看到它。但是,我第二次尝试这样做(选择相同或不同的offer_fund)我得到错误:
UNIQUE约束失败:users_investment.user_id
关于如何解决这个问题的任何想法?感谢。
答案 0 :(得分:2)
您正在使用id
关系,该关系仅为每个ForeignKey
提供一个User
个对象。
您应该使用ManyToManyField
,Investment
每User
个Investment
。