Django 自动将用户 foriegnkey 字段设置为在表单上提交用户



我要做的是自动为提交表单的用户设置模型字段。

Models.py:

class startcampaign(models.Model):
   title = models.CharField(max_length=30)
   description = models.TextField()
   user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

Forms.py:

class StartCampaignsForm(forms.ModelForm):
class Meta:
    model = startcampaign
    exclude =['user']

Views.py:

def register(request):
if request.method == 'POST':
    form = StartCampaignsForm(request.POST)
    if form.is_valid():
        campaign_register = StartCampaignsForm.save(commit=False)
        campaign_register.user = self.objects.get(user=self.user)
        campaign_register.save(commit=True)
        return redirect('home')
else:
    form = StartCampaignsForm()
return render(request, 'Campaigns/register.html', {'form': form})

当我当前运行它时,我得到 save(( 缺少一个位置参数"self"。我不致力于这种方法。我只需要一个工作示例,让我自动将提交表单的用户设置为模型中"user"的外键字段。

您的用户应登录才能正常工作。

views.py

def register(request):
if request.method == 'POST':
    form = StartCampaignsForm(request.POST)
    if form.is_valid():
        campaign_register = StartCampaignsForm.save(commit=False)
        campaign_register.user = request.user
        campaign_register.save(commit=True)
        return redirect('home')
else:
    form = StartCampaignsForm()
return render(request, 'Campaigns/register.html', {'form': form})

最新更新