Django で Web プログラミングを学習しているときに、この問題に直面しました。Google で検索したところ、Django の公式 Web サイトで答えが見つかりませんでした。私を助けてください。
システム環境:
- フェドラ18
- パイソン 2.7
- ジャンゴ 1.5.1
- Eclipse + PyDev
ランタイム: Django の開発サーバー
モデルに ManyToMany フィールドが含まれています。django の管理パネルで値を設定すると、すべてがうまくいきます。以下のコードはすべて私のモデルです:
class Posts(models.Model):
post_authorid = models.IntegerField(verbose_name=u'Authorid')
post_date = models.DateTimeField(auto_now_add=True,verbose_name=u'PostDate')
post_date_modified = models.DateTimeField(auto_now=True,verbose_name=u'LastModifiedTime')
post_content = models.TextField(verbose_name=u'Content')
post_title = models.CharField(max_length=50,verbose_name=u'Title')
post_name = models.CharField(max_length=50,blank=True,verbose_name=u'ShortName')
post_cover = models.CharField(max_length=200,verbose_name=u'CoverUrl')
post_introduction = models.CharField(max_length=500,blank=True,verbose_name=u'introduction')
post_status = models.ForeignKey(Status,verbose_name=u'status')
comment_status = models.BooleanField(verbose_name=u'show_comments')
post_password = models.CharField(max_length=20,blank=True,verbose_name=u'passwd')
post_tagid = models.ManyToManyField(Tags,verbose_name=u'tag')
post_threadtypeid = models.ForeignKey(ThreadTypes,verbose_name=u'ThreadType')
post_comment_conut = models.IntegerField(verbose_name=u'CommentsCount')
post_comments = models.ManyToManyField(Comments,blank=True,verbose_name=u'Comment')
def __unicode__(self):
return u"%s %s %s" % (self.id,self.post_title,self.post_date)
class Meta:
ordering = ['post_date']
class Tags(models.Model):
tagname = models.CharField(max_length=20,verbose_name=u'标签名称')
def __unicode__(self):
return u"%s %s" % (self.id,self.tagname)
class Meta:
ordering = ['id']
私のpythonシェルでは、次のように入力します。
post = Posts()
post.post_tagid = Tags.objects.get(id='1')
次に、django は http 500 エラーを発生させます。
オブジェクトは、この多対多の関係を使用する前に、フィールド「posts」の値を持っている必要があります。
しかし、私が使用するとき:
post= Posts.objects.get(id='1')
注 - Django admin によって Posts オブジェクトを入力しました
次に、私が使用するとき
post.post_tagid = Tags.objects.get(id='1')
すべてがうまくいきます。
Q:このエラーを発生させずに ManyToMany フィールドを追加するにはどうすればよいですか?