Python Django:人口众多

Python Django:人口众多,python,django,Python,Django,我正在开发我的第一个Django应用程序,并希望创建一个脚本,将数据填充到我的模型中以进行测试,类似于使用Django处理Tango时所做的操作。() 我知道如何填充大多数模型字段,但却在填充许多字段。最好的办法是什么 models.py 填充.py 如果要在“添加艺术家”功能中添加流派,请将流派作为列表传入,并将其添加到多对多字段,如下所示: def add_artist(name, genres): a, created = Artist.objects.get_or_create(na

我正在开发我的第一个Django应用程序,并希望创建一个脚本,将数据填充到我的模型中以进行测试,类似于使用Django处理Tango时所做的操作。()

我知道如何填充大多数模型字段,但却在填充许多字段。最好的办法是什么

models.py 填充.py
如果要在“添加艺术家”功能中添加流派,请将流派作为列表传入,并将其添加到多对多字段,如下所示:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  for genre in genres:
     a.add(genre)

更多信息请参见

如果要在“添加艺术家”功能中添加流派,请将流派作为列表传入,并将其添加到多对多字段,如下所示:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  for genre in genres:
     a.add(genre)

更多信息请参见

如果要在“添加艺术家”功能中添加流派,请将流派作为列表传入,并将其添加到多对多字段,如下所示:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  for genre in genres:
     a.add(genre)

更多信息请参见

如果要在“添加艺术家”功能中添加流派,请将流派作为列表传入,并将其添加到多对多字段,如下所示:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  for genre in genres:
     a.add(genre)

有关详细信息,请参阅上的文档,因为不需要使用脚本。将名为
m2m
的多对多字段添加到文档中的示例中,如下所示:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
      "m2m": [1,2]
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
      "m2m": [1,2]
    }
  }
]

您将看到m2m字段只是将主键列表作为参数。

您应该阅读上的文档,因为您不需要使用脚本来执行此操作。将名为
m2m
的多对多字段添加到文档中的示例中,如下所示:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
      "m2m": [1,2]
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
      "m2m": [1,2]
    }
  }
]

您将看到m2m字段只是将主键列表作为参数。

您应该阅读上的文档,因为您不需要使用脚本来执行此操作。将名为
m2m
的多对多字段添加到文档中的示例中,如下所示:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
      "m2m": [1,2]
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
      "m2m": [1,2]
    }
  }
]

您将看到m2m字段只是将主键列表作为参数。

您应该阅读上的文档,因为您不需要使用脚本来执行此操作。将名为
m2m
的多对多字段添加到文档中的示例中,如下所示:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
      "m2m": [1,2]
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
      "m2m": [1,2]
    }
  }
]

您将看到m2m字段仅将主键列表作为参数。

多功能管理器的add方法能够获取多个模型或ID:

ids_list = [1,2,3]
artist.genre.add(*ids_list) # or
artist.genre.add(1,2,3)

因此,您可以重写您的方法:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  a.genre.add(*Genre.objects.filter(name__in=[genres]))

ManyToMany manager的add方法能够获取多个模型或ID:

ids_list = [1,2,3]
artist.genre.add(*ids_list) # or
artist.genre.add(1,2,3)

因此,您可以重写您的方法:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  a.genre.add(*Genre.objects.filter(name__in=[genres]))

ManyToMany manager的add方法能够获取多个模型或ID:

ids_list = [1,2,3]
artist.genre.add(*ids_list) # or
artist.genre.add(1,2,3)

因此,您可以重写您的方法:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  a.genre.add(*Genre.objects.filter(name__in=[genres]))

ManyToMany manager的add方法能够获取多个模型或ID:

ids_list = [1,2,3]
artist.genre.add(*ids_list) # or
artist.genre.add(1,2,3)

因此,您可以重写您的方法:

def add_artist(name, genres):
  a, created = Artist.objects.get_or_create(name=name)
  a.genre.add(*Genre.objects.filter(name__in=[genres]))

谢谢你伸出援手。我遇到了以下问题:
Traceback(上次调用):文件“populate.py”,第37行,在populate()文件“populate.py”,第19行,在populate justin_timberlake=add_artist(name='justin timberlake',genres='rnb',pop'])文件“populate populate.py,第31行,在add_artist a.add(genre)中AttributeError:“tuple”对象没有属性“add”
啊,很抱歉,现在修复了它。错误是由于
get\u或\u create
方法导致的,该方法返回
元组的形式为
(对象,已创建)
,其中
created
True
,如果对象已创建,则返回
False
。有关
获取或创建方法的更多信息,请参阅。感谢联系。我遇到了以下问题:
Traceback(上次调用):文件“populate.py”,第37行,在populate()文件“populate.py”,第19行,在populate justin_timberlake=add_artist(name='justin timberlake',genres='rnb',pop'])文件“populate populate.py,第31行,在add_artist a.add(genre)中AttributeError:“tuple”对象没有属性“add”
啊,很抱歉,现在修复了它。错误是由于
get\u或\u create
方法导致的,该方法返回
元组的形式为
(对象,已创建)
,其中
created
True
,如果对象已创建,则返回
False
。有关
获取或创建方法的更多信息,请参阅。感谢联系。我遇到了以下问题:
Traceback(上次调用):文件“populate.py”,第37行,在populate()文件“populate.py”,第19行,在populate justin_timberlake=add_artist(name='justin timberlake',genres='rnb',pop'])文件“populate populate.py,第31行,在add_artist a.add(genre)中AttributeError:“tuple”对象没有属性“add”
啊,很抱歉,现在修复了它。错误是由于
get\u或\u create
方法导致的,该方法返回
元组的形式为
(对象,已创建)
,其中
created
True
,如果对象已创建,则返回
False
。有关
获取或创建方法的更多信息,请参阅。感谢联系。我遇到了以下问题:
Traceback(上次调用):文件“populate.py”,第37行,在populate()文件“populate.py”,第19行,在populate justin_timberlake=add_artist(name='justin timberlake',genres='rnb',pop'])文件“populate populate.py,第31行,在add_artist a.add(genre)中AttributeError:“tuple”对象没有属性“add”
啊,很抱歉,现在修复了它。错误是由于
get\u或\u create
方法导致的,该方法返回
元组的形式为
(对象,已创建)
,其中
created
True
,如果对象已创建,则返回
False
。有关
get\u或\u create
方法的更多信息,请参阅,如何格式化
genres
输入。到目前为止,我在运行
genres\u queryset
时得到的是空列表。这就是我目前拥有的:
john\u coltrane=