1

我试图在我的 models.py 文件中将用户模型作为 ForeignKey 的参数传递,但我收到了错误消息TypeError: int() argument must be a string or a number, not 'User'

这是我的文件,请告诉我我做错了什么:

模型.py

from django.db import models

class Lesson(models.Model):
    name = models.CharField(max_length=30)
    author = models.ForeignKey('auth.User')
    description = models.CharField(max_length=100)
    yt_id = models.CharField(max_length=12)
    upvotes = models.IntegerField()
    downvotes = models.IntegerField()
    category = models.ForeignKey('categories.Category')
    views = models.IntegerField()
    favorited = models.IntegerField()

    def __unicode__(self):
        return self.name

populate_db.py

from django.contrib.auth.models import User
from edu.lessons.models import Lesson
from edu.categories.models import Category

users = User.objects.all()

cat1 = Category(1, 'Mathematics', None, 0)
cat1.save()
categories = Category.objects.all()

lesson1 = Lesson(1, 'Introduction to Limits', users[0], 'Introduction to Limits', 'riXcZT2ICjA', 0, 0, categories[0], 0, 0)
lesson1.save() # Error occurs here
4

3 回答 3

1

在这里使用位置参数非常令人困惑,似乎是原因。

ForeignKey我可以通过在我自己的一个模型上使用位置参数来重现您的错误。使用 kwargs 解决了这个问题。

我什至没有兴趣调查原因 - 我从未使用令人困惑的位置参数来填充模型(如果您修改过模型,似乎它们也会因为令人困惑的消息而一直中断)

编辑:或者更糟糕的是,随着时间的推移,输入字段会出现错误的模型字段。

于 2012-04-25T01:53:56.097 回答
0

从 django.contrib.auth 导入用户(忘记了确切的导入调用)作者 = models.ForeignKey(User)

编辑(添加):我会按照我所说的方式导入用户,并将“author.category”用于其他关系。虽然比我更了解 Django 的人已经解决了这个问题。

于 2012-04-26T05:55:53.940 回答
0

您应该使用关键字参数以及使用默认字段值简单地对其进行初始化。

class Lesson(models.Model):
    name = models.CharField(max_length=30)
    author = models.ForeignKey('auth.User')
    description = models.CharField(max_length=100)
    yt_id = models.CharField(max_length=12)
    upvotes = models.IntegerField(default=0)
    downvotes = models.IntegerField(default=0)
    category = models.ForeignKey('categories.Category')
    views = models.IntegerField(default=0)
    favorited = models.IntegerField(default=0)

    def __unicode__(self):
        return self.name


lesson1 = Lesson(name='Introduction to Limits', author=users[0], description='Introduction to Limits', yt_id='riXcZT2ICjA', category=categories[0])
lesson1.save()
于 2012-04-26T15:45:57.350 回答