Django 多对一用户唯一约束失败

Django Many-to-one with Users Unique Constraint Failing

我正在做一个项目,其中有一个名为 Investment 的 class。基本上,一个用户可以有很多投资,一个投资可以由很多用户组成。因此,我的 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()

所以它在部署时的工作方式是用户选择一个 offered_fund,然后输入一个数量然后点击提交。当我这样做一次时,它会注册,我可以在 Django 管理页面中看到它。但是,我第二次尝试这样做(选择相同或不同的 offered_fund)时出现错误:

UNIQUE constraint failed: users_investment.user_id

知道如何解决这个问题吗?谢谢

您正在使用 ForeignKey 关系,每个 Investment 只允许一个 User 对象。

您应该使用 ManyToManyField,它允许每个 Investment 有多个 User