Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Django中同时创建ManyToMany实例

在Django中同时创建ManyToMany实例
EN

Stack Overflow用户
提问于 2018-10-26 17:19:59
回答 1查看 203关注 0票数 1

我有一个json上所有国家的数据,看起来像这样:

代码语言:javascript
运行
AI代码解释
复制
{
      "name":"Afghanistan",
      "topLevelDomain":[
         ".af"
      ],
      "alpha2Code":"AF",
      "alpha3Code":"AFG",
      "callingCodes":[
         "93"
      ],
      "capital":"Kabul",
      "altSpellings":[
         "AF",
         "Afġānistān"
      ],
      "region":"Asia",
      "subregion":"Southern Asia",
      "population":27657145,
      "latlng":[
         33.0,
         65.0
      ],
      "demonym":"Afghan",
      "area":652230.0,
      "gini":27.8,
      "timezones":[
         "UTC+04:30"
      ],
      "borders":[
         "IRN",
         "PAK",
         "TKM",
         "UZB",
         "TJK",
         "CHN"
      ],
      "nativeName":"افغانستان",
      "numericCode":"004",
      "currencies":[
         {
            "code":"AFN",
            "name":"Afghan afghani",
            "symbol":"؋"
         }
      ],
      "languages":[
         {
            "iso639_1":"ps",
            "iso639_2":"pus",
            "name":"Pashto",
            "nativeName":"پښتو"
         },
         {
            "iso639_1":"uz",
            "iso639_2":"uzb",
            "name":"Uzbek",
            "nativeName":"Oʻzbek"
         },
         {
            "iso639_1":"tk",
            "iso639_2":"tuk",
            "name":"Turkmen",
            "nativeName":"Türkmen"
         }
      ],
      "translations":{
         "de":"Afghanistan",
         "es":"Afganistán",
         "fr":"Afghanistan",
         "ja":"アフガニスタン",
         "it":"Afghanistan",
         "br":"Afeganistão",
         "pt":"Afeganistão",
         "nl":"Afghanistan",
         "hr":"Afganistan",
         "fa":"افغانستان"
      },
      "regionalBlocs":[
         {
            "acronym":"SAARC",
            "name":"South Asian Association for Regional Cooperation",
            "otherAcronyms":[

            ],
            "otherNames":[

            ]
         }
      ],
      "cioc":"AFG"
   }

我正在尝试制作模型来表示所有这些信息。我有一个国家模型,然后是一个通过ManyToManyField()链接到国家的语言、翻译、区域块和货币模型。我尝试使用Django shell将所有国家/地区一次性添加到我的数据库中。在内部,我运行以下命令:

代码语言:javascript
运行
AI代码解释
复制
import json
from api.models import Country
from api.models import currencies, languages, translations, regionalBlocs
with open('data.json') as f:
  data_json = json.load(f)

for data in data_json:
    data = Country(name=data['name'], topLevelDomain=data['topLevelDomain'], callingCodes=data['callingCodes'], capital=data['capital'], altSpellings=data['altSpellings'], region=data['region'], subregion=data['subregion'], population=data['population'],latlng=data['latlng'], demonym=data['demonym'], area=['area'], gini=data['gini'], timezones=data['timezones'], borders=data['borders'], nativeName=data['nativeName'], numericCode=data['numericCode'], currencies=data['currencies'], languages=data['languages'], translations=data['translations'], flag=data['flag'], regionalBlocs=data['regionalBlocs'], cioc=data['cioc'])
    data.save()

但我得到的错误是“直接分配到多对多集合的前端是被禁止的。请改用currencies.set()。”

当我将我的国家/地区实例设置到数据库中时,有没有什么方法可以设置这4个多对多实例?我只有一个包含所有国家/地区的JSON文件,所以在创建国家/地区实例之前,要分离出每种货币、语言等会有很大的工作量。

models.py:

代码语言:javascript
运行
AI代码解释
复制
class languages(models.Model):
    iso639_1 = models.CharField(max_length=255, null=True)
    iso639_2 = models.CharField(max_length=255, null=True)
    name = models.CharField(max_length=255, null=True)
    nativeName = models.CharField(max_length=255, null=True)


class Country(models.Model):
    languages = models.ManyToManyField(languages)
EN

回答 1

Stack Overflow用户

发布于 2018-10-26 17:36:17

不,你不能。

ManyToManyField基本上是一个包含来自两个对象的两个主键的表。当两端都没有引用时,很难添加任何关系。因此,ManyToManyField首先需要有一个真实的对象作为引用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53013566

复制
相关文章
Django admin Foreignkey ManyToMany list_display展示
对于上面的model,如果要在django admin中展示ghosts信息,那么在list_display中直接加入’ghosts’ 会报下面的错误:The value of ‘list_display[1]’ must not be a ManyToManyField.
obaby
2023/02/24
7870
python测试开发django-38.ManyToMany查询
同步之后数据库里面会新增三张表:student、teacher、student_teachers
上海-悠悠
2019/05/06
7600
python测试开发django-38.ManyToMany查询
在VScode中配置创建Vue实例对象简单模板
1.进入VScode界面 点击文件->首选项->用户片段 选择新建全局代码片段文件 命名为vue.json
peng_tianyu
2022/12/15
1.3K0
在VScode中配置创建Vue实例对象简单模板
Python中动态创建类实例
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_m
kongxx
2018/05/14
2.5K0
【C++】构造函数分类 ② ( 在不同的内存中创建类的实例对象 | 栈内存中创建实例对象 | new 关键字创建对象 )
在上一篇博客 【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用 ) 中 , 介绍了 三种类型的 构造函数 , 并在 main 函数中 分别 调用了这 3 种构造函数 ;
韩曙亮
2023/10/15
4410
99 - 在Django中读写Session
请解释Session的概念,以及如何在Django中读写Session Session(服务端, key-value) Cookie(Map, key-value) # session.py from django.http import HttpResponse def writeSession(request): request.session['name'] = 'Bill' request.session['age'] = 20 return HttpResponse('wr
ruochen
2021/06/27
1.5K0
99 - 在Django中读写Session
在nodejs中创建cluster
在前面的文章中,我们讲到了可以通过worker_threads来创建新的线程,可以使用child_process来创建新的子进程。本文将会介绍如何创建nodejs的集群cluster。
用户2323866
2021/06/22
3.7K0
在nodejs中创建cluster
在前面的文章中,我们讲到了可以通过worker_threads来创建新的线程,可以使用child_process来创建新的子进程。本文将会介绍如何创建nodejs的集群cluster。
程序那些事
2021/01/28
3.5K0
在 PostgreSQL 中解码 Django Session
会话(session)是任何基于 HTTP 的 web 框架的重要组成部分。它使得 web 服务器可以记录重复请求的 HTTP 客户端而不需要对每一次请求重新进行认证。记录会话的方式有多种。其中的一些方法不需要你服务器保持会话数据(如 JSON Web Tokens),而另外一些则需要。
Miigon
2022/10/27
3.4K0
在 PostgreSQL 中解码 Django Session
Django简单实例
可以点击我们的web开发一班,进入之后连接变为127.0.0.1:8000/calssinfo/1
不断折腾
2019/09/23
1.2K0
Django学习笔记之Queryset详解
    Django ORM用到三个类:Manager、QuerySet、Model。Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法;QuerySet:Manager类的一些方法会返回QuerySet实例,QuerySet是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法,前面说了,Django给我们提供了增加表级方法的途径,那就是自定义manager类,而不是自定义QuerySet类,一般的我们没有自定义QuerySet类的必要;django.db.models模块中的Model类,我们定义表的model时,就是继承它,它的功能很强大,通过自定义model的instance可以获取外键实体等,它的方法都是记录级方法(都是实例方法,貌似无类方法),不要在里面定义类方法,比如计算记录的总数,查看所有记录,这些应该放在自定义的manager类中。以Django1.6为基础。
Jetpropelledsnake21
2018/08/01
2.8K0
如何在 Django 中创建抽象模型类?
Django 中的抽象模型类是一个模型,它用作其他模型继承的模板,而不是一个旨在创建或保存到数据库的模型。在应用程序中,可以使用抽象模型定义多个模型共享的相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 的模型类,以建立一个抽象模型类。
很酷的站长
2023/08/11
5250
如何在 Django 中创建抽象模型类?
在linux中同时探测多台主机是否存活
我们都知道PING可以验证主机是否能够通过网络与另一台计算机或网络设备进行通信。使用 Ping 命令,我们可以向目标主机发送 ICMP Echo 请求,并测试目标主机是否存活。我们可以在 LAN 和 WAN 中 ping 系统。 下面给出了 ping 命令的典型用法。 要ping IP 地址 $ ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=114 time=53.666
入门笔记
2022/06/02
1.3K0
django创建项目
Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:
py3study
2018/08/02
5910
点击加载更多

相似问题

Django创建ManyToMany关系

10

Django |通过实例查询ManyToMany关系

124

如何删除Django中ManyToMany字段的实例

11

同时创建多个实例Django Rest框架

21

Django表单: ManyToMany内联创建

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档