![](/img/trans.png)
[英](Django) Cannot assign “u'1'”: “StaffProfile.user” must be a “User” instance
[英](Django) Cannot assign “<Article: >”: “Article.user” must be a “User” instance
提交表單時出現錯誤。
Cannot assign "Article": : "Article.user" must be a "User" instance.
我在Django還不算老,我可以看到有一個用戶實例問題。 我怎樣才能解決這個問題?
這是模型:
from django.db import models
from updown.fields import RatingField
from taggit.managers import TaggableManager
from taggit.models import *
from django.db.models.signals import pre_delete
from django.contrib.auth.models import User
class Article(models.Model):
user = models.OneToOneField(User)
titre = models.CharField(max_length=100)
contenu = models.TextField(null=True)
date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date de parution")
image = models.ImageField(upload_to='article', default='article/amazarashi.jpeg')
rating = RatingField(can_change_vote=True)
tags = TaggableManager(through=TaggedItem, blank=True)
def __str__(self):
return self.titre
表格如下:
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
exclude = ['date', 'rating', 'user']
widgets={
"titre":forms.TextInput(attrs={'placeholder':'Le titre', 'class':'form-control'}),
"contenu":forms.Textarea(attrs={'placeholder':'Le Contenu de votre message','class':'form-control'}),
"image":forms.FileInput(attrs={'id':'uploadBtn', 'placeholder':'Votre Image', 'class':'form-control'}),
"tags":forms.TextInput(attrs={'placeholder':'Vos Tags', 'class':'form-control'}),
}
form = ArticleForm()
這是視圖:
@login_required
def AddArticle(request):
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
save_it = form.save(commit=False)
save_it.user = Article(user=request.user)
save_it.save()
context = { 'form':form }
populateContext(request, context)
return render(request, 'addarticle.html', context)
在這一方面,您正在以用戶身份分配文章
if form.is_valid():
save_it = form.save(commit=False)
save_it.user = Article(user=request.user)
save_it.save()
正確的方法將是:
if form.is_valid():
save_it = form.save(commit=False)
save_it.user = request.user
save_it.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.