Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django Tastypie用ForeignKey发布

Django Tastypie用ForeignKey发布
EN

Stack Overflow用户
提问于 2013-12-13 12:27:13
回答 2查看 399关注 0票数 0

我目前正在学习Django和Tastypie。我到处寻找答案,但似乎找不到具体解决这个问题的任何东西。

我在Tastypie中定义了三个资源:用户、搜索和评论。有许多评论供搜索。

models.py的简化查看如下:

代码语言:javascript
运行
AI代码解释
复制
class Search(models.Model):
    search_name = models.CharField(max_length=40, unique=True)
    search_slug = models.SlugField(default='')
    search_description = models.TextField(blank=True)
    splunk_search = models.TextField()
    splunk_results = models.TextField(blank=True)

class Comment(models.Model):
    search = models.ForeignKey(Search)
    author = models.ForeignKey(User)
    comment_title = models.CharField(max_length=80)
    comment = models.TextField()

在我的api.py

代码语言:javascript
运行
AI代码解释
复制
class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'

class SearchResource(ModelResource):
    comments = fields.ToManyField('myapp.api.CommentResource','comments', null=True, blank=True)

    class Meta:
        queryset = Search.objects.all()
        list_allowed_methods = ['get', 'post']
        detail_allowed_methods = ['get', 'post', 'put', 'delete']
        resource_name = 'search'
        serializer = urlencodeSerializer()
        authentication = Authentication()
        authorization = Authorization()

class CommentResource(ModelResource):
    search = fields.ToOneField(SearchResource, 'search')

    class Meta:
        queryset = Comment.objects.all()
        resource_name = 'comment'
        list_allowed_methods = ['get', 'post']
        detail_allowed_methods = ['get', 'post', 'put', 'delete']
        authorization = Authorization()
        authentication = Authentication()
        serializer = urlencodeSerializer()
        validation = FormValidation(form_class=CommentForm)

我在js中的提交处理程序

代码语言:javascript
运行
AI代码解释
复制
 $.ajax({
     type: 'POST',
     url: '/api/v1/comment/',
     dataType: 'json',
     data: $("#commentForm").serialize(),
     processData: false,
     success: function(messages) {
     console.log("Success!");
   },
   error: function() {
     console.log("Oh no, something went wrong!");
   }
 });

我总是得到回复:Comment has no search.

此外,这种形式的工作方式之外,味道很好。原始django表单既排除了搜索字段,也排除了作者字段,它们的数据是预先填充的。我只是不能让同样的东西在Tastypie起作用。提前感谢您的任何建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-24 00:10:10

您使SearchResource具有comments (m2m关系),但没有在模型类Search中指定它,所以我想您使用了反向关系。

如果是这样,而不是,

代码语言:javascript
运行
AI代码解释
复制
class SearchResource(ModelResource):
    comments = fields.ToManyField('myapp.api.CommentResource','comments', null=True, blank=True)

换到,

代码语言:javascript
运行
AI代码解释
复制
class SearchResource(ModelResource):
    comments = fields.ToManyField('myapp.api.CommentResource', 'comment_set', related_name='search', null=True, full=True)

问题是“注释没有搜索”,因为您没有指定related_name。另一方面,类Search没有属性comments,只有comment_set (反向关系)。

票数 1
EN

Stack Overflow用户

发布于 2013-12-13 14:34:14

看起来你有一个网页,有一个表单,你正试图发送给品味。但是,您的数据是通过以下方法生成的:

代码语言:javascript
运行
AI代码解释
复制
$("#commentForm").serialize()

这将生成URL编码的数据,但您需要发送JSON。

您需要以JSON的形式发送数据。相反,这可能会奏效:

代码语言:javascript
运行
AI代码解释
复制
JSON.stringify($("#commentForm").serializeArray());

这可能不会直接起作用。在将serializeArray()传递到JSON.stringify()之前,您可能需要将它修改为适合tastypie的格式。

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

https://stackoverflow.com/questions/20575409

复制
相关文章
django-ForeignKey,OneToOneField,ManyToManyField
进入到django自带的related.py中,可以看到 1.ForeignKey 初始化的参数有: to, on_delete, related_name=None, related_query_name=None,limit_choices_to=None, parent_link=False, to_field=None, db_constraint=True, **kwargs 假设我们有: class Author(models.Model): author = models.Char
西西嘛呦
2020/08/26
7180
django Foreignkey 之 on_delete
on_delete 指的是通过 ForeignKey 连接起来的当前对象被删除后,外键字段进行的操作。
卓越笔记
2023/02/18
2530
Django之ForeignKey和ManyToManyField多表查询
多表查询是模型层的重要功能之一, Django提供了一套基于关联字段独特的解决方案.
菲宇
2022/12/21
1.8K0
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
7680
Django admin ForeignKey 字段增加搜索选择框
当 ForeignKey 数据过多,手动在后台添加时不方便找到自己的想要数据,遂想要一个可以搜索检索数据功能。
卓越笔记
2023/02/18
1.4K0
Django admin ForeignKey 字段增加搜索选择框
Django外键(ForeignKey)操作以及related_name的作用
之前已经写过一篇关于Django外键的文章,但是当时并没有介绍如何根据外键对数据的操作,也就是如何通过主表查询子表或者通过子表查询主表的信息
全栈程序员站长
2022/09/10
2K0
Django外键(ForeignKey)操作以及related_name的作用
python测试开发django-37.外键(ForeignKey)查询
前面在admin后台页面通过设置外键,可以选择下拉框的选项,本篇主要讲解关于外键(ForeignKey)的查询
上海-悠悠
2019/05/06
1.6K0
python测试开发django-37.外键(ForeignKey)查询
PyPI发布 Django App
PyPI发布 Django App #0 GitHub https://github.com/Coxhuang/DjangoApp-commit-PyPI #1 环境 Python3.6 #2 开始 #2.1 安装twine pip3 install twine #2.2 新建包(我的包名叫django-google-auth) .django-google-auth ├── LICENSE ├── MANIFEST.in ├── README.md ├── django_google_auth2 #
Autooooooo
2020/11/09
5250
PyPI发布 Django App
创建 Django 博客的数据库模型
设计博客的数据库表结构 博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库。我们把写好的文章永久地保存在数据库里,当用户访问我们的博客时,Django 就去数据库里把这些数据取出来展现给用户。 博客的文章应该含有标题、正文、作者、发表时间等数据。一个更加现代化的博客文章还希望它有分类、标签、评论等。为了更好地存储这些数据,我们需要合理地组织数据库的表结构。 我们的博客初级版本主要包含博客文章,文章会有分类以及标签。一篇文章只能有一个分类,但可
追梦人物
2018/04/17
1.4K0
完整的 Django 零基础教程|初学者指南 - 第 3 部分 转自:维托尔·弗雷塔斯
我不了解您,但就我个人而言,通过查看实际示例和代码片段,我学到了更多。对我来说,这是难以处理在在例子你读一个概念 Class A和 Class B,或者当我看到经典的 foo(bar)例子。我不想和你做那种事。
梦溪
2021/08/09
2.2K0
测试开发进阶(三十四)
数据库模型图 创建app 根据上面的数据库设计,创建9个app configures debugtalks envs interfaces projects reports testsuits tes
zx钟
2019/11/07
5000
测试开发进阶(三十四)
pycharm怎么运行django项目_django怎么用
 原文转载自:http://www.cnblogs.com/Leo_wl/p/5824541.html
全栈程序员站长
2022/09/27
2.4K0
pycharm怎么运行django项目_django怎么用
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
在 确定分布策略 中,我们讨论了在多租户用例中使用 Citus 所需的与框架无关的数据库更改。在这里,我们专门研究如何借助 django-multitenant 库将多租户 Django 应 用程序迁移到 Citus 存储后端。
为少
2022/05/18
2.1K0
探索 Python/Django 支持分布式多租户数据库,如 Postgres+Citus
django 模型关系
比如汽车和制造商的例子,一辆汽车只能属于一个制造商,但是一个制造商有多辆汽车,这个关系,用Django的Model来表示,就是
程序员同行者
2018/08/16
1.4K0
python-Django 模型层-模型层的字段类型
Django模型层的字段类型决定了数据库中字段的数据类型。在Django中,每个模型都是由字段构成的。这些字段描述了模型的属性,并指定了它们在数据库中的数据类型。Django提供了许多字段类型,包括文本字段、整数字段、日期字段、时间字段等。
玖叁叁
2023/04/23
1.2K0
第 03 篇:创建 Django 博客的数据库模型
博客最主要的功能就是展示我们写的文章,它需要从某个地方获取博客文章数据才能把文章展示出来,通常来说这个地方就是数据库。我们把写好的文章永久地保存在数据库里,当用户访问我们的博客时,django 就去数据库里把这些数据取出来展现给用户。
HelloGitHub
2021/05/14
5820
点击加载更多

相似问题

Django Tastypie:用ForeignKey进行过滤

14

Django = Tastypie:用ForeignKey__id创建记录

13

Django TastyPie ForeignKey full =真不工作

11

Django Tastypie YUI模型-用foreignKey id代替resource_uri

10

Django,mongodb,Tastypie-nonrel : ForeignKey列表

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文