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

时间:2018-03-10 15:41:18

标签: django

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

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'。 我'不专注于这种方法。我只需要一个工作示例,让我自动设置将表单提交到用户'的外键字段的用户。在我的模型中。

1 个答案:

答案 0 :(得分:1)

您的用户应该登录才能使用此功能。

<强> 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})