1

models.py ファイルで、ForeignKey のパラメーターとしてユーザー モデルを渡そうとしていますが、エラーが発生しますTypeError: int() argument must be a string or a number, not 'User'

これが私のファイルです。私が間違っていることを教えてください:

models.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私自身のモデルの 1 つで位置引数を使用して、エラーを再現できます。kwargs を使用すると、問題が解決します。

理由を調べることにも興味がありません-モデルを設定するために紛らわしい位置引数を使用したことはありません(モデルを変更したことがあると、混乱するメッセージで常に壊れてしまうようです)

編集:またはさらに悪いことに、入力フィールドが時間の経過とともに間違ったモデルフィールドに移動するというサイレントエラー。

于 2012-04-25T01:53:56.097 に答える
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 に答える
0

from django.contrib.auth import User (正確な import 呼び出しを忘れた) author = models.ForeignKey(User)

編集(追加):私が述べた方法でユーザーをインポートし、他の関係に「author.category」を使用します。これは、私よりも Django についてよく知っている人によって解決されました。

于 2012-04-26T05:55:53.940 に答える