在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 中的 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) 我正在尝试为以下模型创建表单集:
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 构建表单集,或以某种方式复制此功能?
谢谢!
我一直在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构建查询的片段.
问题是片段将包括由first和second组件定义的那些字段,即使一次只显示其中一个.
在这种情况下我应该:
1)Relay.RootContainer在renderScene回调中返回另一个?嵌入Relay.RootContainers彼此之间通常是个坏主意吗?
renderScene(route, nav) …Run Code Online (Sandbox Code Playgroud) 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中实现此模式吗?
如果我有以下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)
有人建议进一步阅读?
我正在为我的博客进行基本搜索,基本功能正常运行.然而,我想知道的是,你是否可以在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传递这些变量.
我正在尝试为两个资源构建一个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协会?
我正在使用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数据通常是个好主意吗?
谢谢,
本
使用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) django ×4
jquery ×2
json ×2
relayjs ×2
rest ×2
ajax ×1
api ×1
backbone.js ×1
django-forms ×1
dom ×1
express ×1
file-upload ×1
forms ×1
graphql ×1
graphql-js ×1
image ×1
javascript ×1
many-to-many ×1
models ×1
node.js ×1
python ×1
react-native ×1
swift ×1
swiftui ×1
tastypie ×1