我有一個django應用程序,每個註冊用戶都可以爲其創建類別。對於我使用django-all-auth的認證。我models.py
看起來是這樣的:如何將已通過身份驗證的用戶傳遞給django中的forms.py
class Profile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE)
create_date = models.DateTimeField('date added', auto_now_add=True)
modify_date = models.DateTimeField('date modified', default=timezone.now)
class Category(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
name = models.CharField(max_length=200, unique=True)
create_date = models.DateTimeField('date added', auto_now_add=True)
modify_date = models.DateTimeField('date modified', default=timezone.now)
在索引頁面,用戶可以看到創建的類別,並創建新的。 的views.py:
def CategoryView(request):
user = 0
if request.user.is_authenticated():
user = request.user
form = CategoryNameForm()
form.user = user
context = {
'categories': Category.objects.all(),
'form': form,
'user':user,
}
if request.method == 'POST':
form = CategoryNameForm(request.POST)
form.user = user
if form.is_valid():
form.save()
return render(request, 'myapp/index.html',context)
forms.py: 類CategoryNameForm(forms.ModelForm):
class Meta:
model = Category
fields = ('name',)
認證工作。所以我想幹脆把用戶領域傳遞到形式:
class CategoryNameForm(forms.ModelForm):
class Meta:
model = Category
fields = ('name','user',)
隱藏它,然後,只需通過JS選擇它,因爲用戶是在上下文。我只是想知道是否有更簡單的方法。這form.user = user
因爲某些原因沒有工作,我得到一個NOT NULL約束失敗
所以你想確保剛剛登錄的用戶可以訪問?那麼view.py文件中的'@ login_required'怎麼樣? – hansTheFranz