小编ben*_*nto的帖子

django-tastypie和许多"通过"关系

在Django和Tastypie中,我试图弄清楚如何正确处理多对多的"通过"关系,如下所示:https://docs.djangoproject.com/en/dev/topics/db/models/#额外的字段上,多到多对多关系

以下是我的样本模型:

class Ingredient(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

class RecipeIngredients(models.Model):
    recipe = models.ForeignKey('Recipe')
    ingredient = models.ForeignKey('Ingredient')
    weight = models.IntegerField(null = True, blank = True)

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    ingredients = models.ManyToManyField(Ingredient, related_name='ingredients', through='RecipeIngredients', null = True, blank = True)
Run Code Online (Sandbox Code Playgroud)

现在我的api.py文件:

class IngredientResource(ModelResource):
    ingredients = fields.ToOneField('RecipeResource', 'ingredients', full=True)

    class Meta:
        queryset = Ingredient.objects.all()
        resource_name = "ingredients"


class RecipeIngredientResource(ModelResource):
    ingredient = fields.ToOneField(IngredientResource, 'ingredients', full=True)
    recipe = fields.ToOneField('RecipeResource', 'recipe', full=True)

    class Meta:
        queryset= RecipeIngredients.objects.all()


class RecipeResource(ModelResource):
    ingredients …
Run Code Online (Sandbox Code Playgroud)

django rest tastypie

7
推荐指数
1
解决办法
5776
查看次数

Django:ManyToManyField,如果对象尚不存在,则添加对象

我正在尝试使用 Django 中的 ModelForms 将内容添加到我的数据库,其中包括 ManyToManyField。这是我的模型的相关部分:

class Category(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()

    def __unicode__(self):
        return self.name

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    user = models.ForeignKey(User)
    image = models.ImageField(upload_to='images/recipethumbs/', null = True, blank=True)
    ingredients = models.ManyToManyField(Ingredient, through="IngredientMap")
    categories = models.ManyToManyField(Category)
    citation = models.CharField(max_length=200)

    def __unicode__(self):
Run Code Online (Sandbox Code Playgroud)

默认情况下,ManyToManyFields 由多项选择表示。这允许用户从类别对象中预先存在的字段中进行选择。我想更改此设置,以便用户可以选择当前存在的类别,或者添加新的类别(如果不存在)。看起来,这可以通过将小部件更改为 TextInput 来完成。

class RecipeForm(ModelForm):
    class Meta:
        model = Recipe
        widgets = {
            'categories': TextInput(attrs={'size': 40,}),
            'ingredients': Textarea,
        }
Run Code Online (Sandbox Code Playgroud)

但是,如果用户输入类别表中当前不存在的类别,则 Django 会抱怨我需要“输入值列表”。如果新类别尚不存在,如何获取添加新类别的表单?

正如 Ilvar 建议的那样,我在自定义 .save() 中的解决方案:

categories …
Run Code Online (Sandbox Code Playgroud)

forms django many-to-many models

6
推荐指数
1
解决办法
3465
查看次数

Django inlineformset_factory 和 ManyToMany 字段

我正在尝试为以下模型创建表单集:

class Category(models.Model):

    name = models.CharField(max_length=100, unique=True)
    description = models.TextField(null = True, blank=True)

class Recipe(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    user = models.ForeignKey(User)
    categories = models.ManyToManyField(Category, null = True, blank = True)
Run Code Online (Sandbox Code Playgroud)

但每当我尝试实现表单集时,就像这样:

FormSet = inlineformset_factory(Category, Recipe, extra=3)
        formset = FormSet()
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息,指出类别模型中不存在外键。是否可以使用 ManyToManyField 构建表单集,或以某种方式复制此功能?

谢谢!

python django django-forms

6
推荐指数
1
解决办法
7506
查看次数

使用带有React-Native的Relay时的条件片段或嵌入的根容器

我一直在relay努力react-native,但我对如何最好地利用中继路由和根容器感到困惑,特别是在处理Navigator渲染多个路由时.

参加以下课程:

var Nav = React.createClass({

 renderScene(route, nav) {
   switch(route.id) {
     case 'first':
       return <First navigator={nav} />
     case 'second':
       return <Second navigator={nav} />
   }
 },

 render() {
   <Navigator
     initialRoute={{ id: 'first' }}
     renderScene={this.renderScene}
   />
 }

})


module.exports = Relay.createContainer(Nav, {   
  fragments: {
    viewer: () => Relay.QL`
      fragment on User {
        ${First.getFragment('viewer'},
        ${Second.getFragment('viewer'}
      }
    `   
  } 
})
Run Code Online (Sandbox Code Playgroud)

在我的父路由中,然后我请求User构建查询的片段.

问题是片段将包括由firstsecond组件定义的那些字段,即使一次只显示其中一个.

在这种情况下我应该:

1)Relay.RootContainerrenderScene回调中返回另一个?嵌入Relay.RootContainers彼此之间通常是个坏主意吗?

renderScene(route, nav) …
Run Code Online (Sandbox Code Playgroud)

react-native relayjs

6
推荐指数
1
解决办法
2147
查看次数

使用@ViewBuilder创建支持多个子视图的视图

SwiftUI中的某些视图(例如VStack和HStack)支持将多个视图作为子视图,如下所示:

VStack {
  Text("hello")
  Text("world")
}
Run Code Online (Sandbox Code Playgroud)

从我收集,他们使用ViewBuilder使之成为可能的解释在这里

我们如何使用@ViewBuilder创建自己的支持多个子视图的视图?例如,假设我要创建一个Layout接受任意子级的View,如下所示:

struct Layout : View {
  let content: Some View 

  var body : some View {
    VStack {
      Text("This is a layout")
      content()
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

知道如何在SwiftUI中实现此模式吗?

swift swiftui

6
推荐指数
2
解决办法
2141
查看次数

使用jQuery从DOM元素创建json

如果我有以下DOM元素

<div class="item">content1</div>
<div class="item">content2</div>
Run Code Online (Sandbox Code Playgroud)

如何,使用jQuery和Javascript,我是否构建如下的JSON对象?

[{ 
'classname': 'item',
'content': 'content1'
}
{
'classname': 'item',
'content': 'content2'
}]
Run Code Online (Sandbox Code Playgroud)

有人建议进一步阅读?

jquery json dom

5
推荐指数
1
解决办法
9024
查看次数

Django上下文变量和ajax响应

我正在为我的博客进行基本搜索,基本功能正常运行.然而,我想知道的是,你是否可以在ajax响应中返回上下文变量,然后可以在模板中访问它.这是我的搜索def:

from django.http import HttpResponse
from django.db.models import Q
from django.core import serializers

def search(request):
    if request.is_ajax():
        query = request.POST['query']
        text_list = Text.objects.filter(Q(title__icontains=query) | Q(mytextfield__icontains=query))
        data = serializers.serialize("json", text_list)
    else:
        data = "whoops"
    return HttpResponse(data,'application/javascript')
Run Code Online (Sandbox Code Playgroud)

这是通过jquery请求的.

$(document).ready(function() {
    $('#search').submit(function(){
        $.post("/search/search/", $("#search").serialize(), function(data){
            // Search results for: **query**
            $.each(data, function(index){
                $(ajax).append(data[index].fields.title + "<br>");
            }); 
        }, "json"); 
        return false
    });
});
Run Code Online (Sandbox Code Playgroud)

我想要做的是将def搜索中包含的查询变量传递回我的jquery函数.在常规的http响应中,您将使用上下文变量...但我不确定如何使用jQuery传递这些变量.

django ajax jquery json

5
推荐指数
1
解决办法
2538
查看次数

具有关联的RESTful API设计

我正在尝试为两个资源构建一个API,一个用户,另一个用电影.两种资源都有关联 - 用户将拥有多个电影,而电影将拥有多个用户.据推测,我设计的API类似于:

/api/users/
/api/users/:id
/api/users/:id/movies

/api/movies/
/api/movies/:id
/api/movies/:id/users
Run Code Online (Sandbox Code Playgroud)

但问题在于:我还在客户端使用Backbone.js来获取API数据.如果我在创建一个集合

/api/users/:id/movies
Run Code Online (Sandbox Code Playgroud)

然后这将适用于GET请求,但POST和PUT请求似乎将被指向:

/api/users/:id/movies/:id
Run Code Online (Sandbox Code Playgroud)

但是,看起来如果发布的话会更好

/api/movies/:id
Run Code Online (Sandbox Code Playgroud)

代替.那是对的吗?人们如何处理RestFul协会?

javascript api rest backbone.js

5
推荐指数
1
解决办法
1898
查看次数

使用express.js和node上传文件,限制扩展

我正在使用express.js和node处理文件上传,并且具有基本功能.我需要的是实施一些安全措施 - 即限制上传到某些格式(PNG,JPEG).有一种简单的方法只允许某些格式吗?它会进入身体解析器吗?

app.use(express.bodyParser({
    uploadDir: __dirname + '/public/uploads',
    keepExtensions: true   }));

app.use(express.limit('4mb'));
Run Code Online (Sandbox Code Playgroud)

我还应该考虑其他任何安全措施吗?从图像中擦除EXIF数据通常是个好主意吗?

谢谢,

file-upload image node.js express

4
推荐指数
1
解决办法
4527
查看次数

获取relay/graphql中特定列表项的附加信息

使用Relay和GraphQL,假设我有一个返回查看器的模式,以及一个嵌入的相关文档列表.根查询(由片段组成)看起来像这样:

query Root {
  viewer {
    id,
    name,
    groups {
      edges {
        node {
          id,
          name,
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这将允许我显示用户以及所有关联组的列表.

现在让我们说我希望用户能够点击该列表项,并让它展开以显示与该特定列表项关联的注释.我应该如何重新构建我的中继路由查询,以便我可以收到这些评论?如果我向组边缘添加注释边缘,那么它不会获取所有组的注释吗?

query Root {
  viewer {
    id,
    name,
    groups {
      edges {
        node {
          id,
          name,
          comments {
            edges {
              node {
                id,
                content
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

或者我应该更改路由查询以查找特定组?

query Root {
  group(id: "someid"){
    id,
    name,
    comments {
      edges {
        node {
          id,
          content
        }
      }
    }
  },
  viewer {
    id,
    name,
    groups { …
Run Code Online (Sandbox Code Playgroud)

graphql graphql-js relayjs

4
推荐指数
1
解决办法
1299
查看次数