获取“first_name”的Django是此函数的无效关键字参数“创建模型类实例时的TypeError”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取“first_name”的Django是此函数的无效关键字参数“创建模型类实例时的TypeError”相关的知识,希望对你有一定的参考价值。

如果相关,请使用Django 1.11和django-pyodbc-azure最新版本。

我是Django的新手,并一直关注1.11教程,没有任何问题,直到这一点,我非常困惑。

这是我的models.py:

from django.db import models

# Create your models here.


class Player(models.Model):
    first_name = models.CharField(max_length=20, name='First Name')
    last_name = models.CharField(max_length=20, name='Last Name')

    def __str__(self):
        return '{}, {} ({})'.format(self.last_name, self.first_name, self.id)


class Game(models.Model):
    players = models.ManyToManyField(Player, name='Players')

    def __str__(self):
        return ' vs. '.join(self.players)


class Round(models.Model):
    GIN = 'GI'
    UNDERCUT = 'UN'
    KNOCK = 'KN'
    ENDING_ACITONS = (
        (GIN, 'Gin'),
        (UNDERCUT, 'Undercut'),
        (KNOCK, 'Knock'),
    )

    game = models.ForeignKey(Game, on_delete=models.CASCADE, name='Parent Game')
    winner = models.ForeignKey(Player, on_delete=models.CASCADE, name='Winning Player')
    points = models.IntegerField(name='Points Awarded')
    end = models.CharField(max_length=2, choices=ENDING_ACITONS)

    def __str__(self):
        return '{} awarded {} points via {}'.format(self.winner, self.points, self.end.name)

现在当我运行manage.py shell并输入:

from game.models import *
bobby = Player(first_name='Bobby', last_name='Fisher')

我遇到了这个错误:

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:UsersmteperPycharmProjectsGinRummyvenvlibsite-packagesdjangodbmodelsase.py", line 571, in __init__
    raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
TypeError: 'first_name' is an invalid keyword argument for this function

任何见解都会非常感激,因为,正如我之前所说,我是Django和Python的新手。

答案

这是导致问题的name论点。你应该设置verbose_name

class Player(models.Model):
    first_name = models.CharField(max_length=20, verbose_name='First Name')
    last_name = models.CharField(max_length=20, verbose_name='Last Name')

以上是关于获取“first_name”的Django是此函数的无效关键字参数“创建模型类实例时的TypeError”的主要内容,如果未能解决你的问题,请参考以下文章

类型错误:“作者”是此函数的无效键参数

Django,在模型中按函数过滤 Q 对象

Django - 无法按外键 first_name 过滤

在 Django 用户模型中需要 first_name 和 last_name

Django request.user.first_name 在 Safari 中不起作用

创建配置文件时,django social auth 不返回 first_name 和 last_name - django 1.5