Django models 当我';输入shell中第一个类的信息?

Django models 当我';输入shell中第一个类的信息?,django-models,python-3.7,Django Models,Python 3.7,我试图从shell中填充并编写模型,我试图填充输入has(ForeignKey)的信息,使其能够访问另一个类。 这是我在pycharm中的代码: class Team(models.Model): name = models.CharField(max_length=256, unique=True) details = models.TextField() def __str__(self): return self.name class Play

我试图从shell中填充并编写模型,我试图填充输入has(ForeignKey)的信息,使其能够访问另一个类。 这是我在pycharm中的代码:

class Team(models.Model):

   name = models.CharField(max_length=256, unique=True)
   details = models.TextField()
   def __str__(self):  
       return self.name




class Player(models.Model):

    name = models.CharField(max_length=256)
    number = models.IntegerField()
    age = models.IntegerField()

    position_in_field = models.CharField(max_length=256, choices=(('1', 'حارس'), ('2', 'دفاع'), ('3', 'وسط'), ('4', 'هجوم')))
    is_captain = models.BooleanField(default=False)
    team = models.ForeignKey(Team)

    def __str__(self):
        return '{} - {}'.format(self.name, self.team)
这就是结果:

python manage.py shell
Python 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 22:20:52) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from teams.models import Player
>>> from teams.models import Team
>>> Player.objects.create(name='محمد إبراهيم', number='25', age='27', position_in_field='هجوم', is_captain=False, team='فريق الزمالك')
Traceback (most recent call last):
 File "<console>", line 1, in <module>
  File "D:\cj\projects\django\teammanager_env\lib\site-packages\django\db\models\manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "D:\cj\projects\django\teammanager_env\lib\site-packages\django\db\models\query.py", line 392, in create
    obj = self.model(**kwargs)
  File "D:\cj\projects\django\teammanager_env\lib\site-packages\django\db\models\base.py", line 555, in __init__
    _setattr(self, field.name, rel_obj)
  File "D:\cj\projects\django\teammanager_env\lib\site-packages\django\db\models\fields\related_descriptors.py", line 216, in __set__
    self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "'فريق الزمالك'": "Player.team" must be a "Team" instance.
python manage.py shell
win32上的Python 3.7.2(tags/v3.7.2:9A3FFC049220018年12月23日22:20:52)[MSC v.1916 32位(英特尔)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
(InteractiveConsole)
>>>从团队。模型导入玩家
>>>从teams.models导入团队
>>>玩家。对象。创建(姓名=‘队长’、‘队长’、‘队’、‘队长’、‘队长’、‘队长’、‘队长’、‘队长’、‘队长’、‘队长’、‘队长’)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“D:\cj\projects\django\teammanager\u env\lib\site packages\django\db\models\manager.py”,第85行,在manager\u方法中
返回getattr(self.get_queryset(),name)(*args,**kwargs)
文件“D:\cj\projects\django\teammanager\u env\lib\site packages\django\db\models\query.py”,第392行,在create中
obj=自身模型(**kwargs)
文件“D:\cj\projects\django\teammanager\u env\lib\site packages\django\db\models\base.py”,第555行,在\uu init中__
_setattr(self,field.name,rel_obj)
文件“D:\cj\projects\django\teammanager\u env\lib\site packages\django\db\models\fields\related\u descriptors.py”,第216行,在\u\u集中__
self.field.remote\u field.model.\u meta.object\u name,
ValueError:无法分配“'Player.team'”必须是“team”实例。

使用外键创建记录时,必须通过其主键指示引用模型中的记录

在modelTeam的情况下,您没有明确设置主键,因此Django设置默认字段模式id,这是一个自动递增的
PositiveIntegerField
,这是您必须在引用记录中指出的内容

Player.objects.create(name='محمد إبراهيم', number='25', age='27', position_in_field='هجوم', is_captain=False, team_id=1)
如果您有一个带有被引用团队的模型对象,也可以使用它:

Player.objects.create(name='محمد إبراهيم', number='25', age='27', position_in_field='هجوم', is_captain=False, team=team_instance)

使用外键创建记录时,必须通过其主键指示引用模型中的记录

在modelTeam的情况下,您没有明确设置主键,因此Django设置默认字段模式id,这是一个自动递增的
PositiveIntegerField
,这是您必须在引用记录中指出的内容

Player.objects.create(name='محمد إبراهيم', number='25', age='27', position_in_field='هجوم', is_captain=False, team_id=1)
如果您有一个带有被引用团队的模型对象,也可以使用它:

Player.objects.create(name='محمد إبراهيم', number='25', age='27', position_in_field='هجوم', is_captain=False, team=team_instance)