0

我正在为我的 django 站点创建模型(python,如果不明显的话)。

from django.db import models

class Picture(models.Model):
        name = models.CharField(max_length=100)
        pub_date = models.DateTimeField('date published')
        tags = models.ManyToManyField(Tag)
        owner = models.ForeignKey(User)

class Tag(models.Model):
        pics = models.ManyToManyField(Picture)
        name = models.CharField(max_length=30)

class User(models.Model):
        name = models.CharField(max_length=20)
        date_joined = models.DateTimeField('date joined')

class Comment(models.Model):
        content = models.CharField(max_length=500)
        date = models.DateTimeField('date commented')
        commenter = models.ForeignKey(User)
        pic = models.ForeignKey(Picture)

这是整个当前模型,但我在行上遇到错误tags = models.ManyToManyField(Tag),说“NameError:名称'Tag'未定义”

这有什么关系?

4

1 回答 1

1

你在声明图片之后声明了Tag,但是Picture使用了Tag,所以在你尝试使用它的时候并没有定义它。只需更改课程的顺序,它就可以解决问题。

换句话说,将您的代码更改为:

class Tag(models.Model):
    pics = models.ManyToManyField(Picture)
    name = models.CharField(max_length=30)

# Hurray, Tag exists now

class Picture(models.Model):
    name = models.CharField(max_length=100)
    pub_date = models.DateTimeField('date published')

    # Therefore, this next line will work

    tags = models.ManyToManyField(Tag)
    owner = models.ForeignKey(User)

(减去我的评论)

于 2012-12-01T00:48:14.353 回答