假设我有一个简单的 Vuex 状态来保存食谱:
const state = {
recipe: {
id: '',
name: "",
ingredients : [],
}
};
Run Code Online (Sandbox Code Playgroud)
而是创建一个包含相同数据的配方类,然后在状态中将其声明为该类的实例是一种好习惯吗?
const state = {
recipe: new Recipe()
};
Run Code Online (Sandbox Code Playgroud)
如果配方类有方法,这些方法应该通过 vuex 存储上的 getter/mutations 来代理,还是可以直接调用这些方法?
我有一个单页面应用程序,我正在研究变量x可能因多种原因而发生变化.我希望DOM中显示的值(下面的div)始终与javascript变量的值匹配.
我理解像angular这样的框架对此有好处,但我正在寻找一个更轻量级和简单的解决方案.如果有帮助的话,我已经在页面上使用了JQuery和underscore.js.
<script>
var x = 100
</script>
<div id="value_display">100</div>
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想要一些我需要提供变量和元素作为参数的东西.例如:
bind(x,'#value_display')
Run Code Online (Sandbox Code Playgroud) 我有一个带有外键字段的 django 模型形式“食谱”,其中包含模型“成分”的外键字段。
渲染表单时,我得到一个 SELECT 列表,该列表的 ID 与成分 ID 匹配,文本显示等于字段的字符串表示形式。
但是,我想将数据属性添加到与成分查询集中呈现的选项相匹配的选择列表。
例如,假设这是当前正在呈现的内容:
<option value="1158">Carrots</option>
<option value="1159">Strawberry</option>
<option value="1160">Onion</option>
<option value="1161">Spinach</option>
Run Code Online (Sandbox Code Playgroud)
但我想为相关对象添加一个数据属性:
<option value="1158" data-ingredient-type="vegetable">Carrots</option>
<option value="1159" data-ingredient-type="fruit">Strawberry</option>
<option value="1160" data-ingredient-type="vegetable">Onion</option>
<option value="1161" data-ingredient-type="vegetable">Spinach</option>
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含两个基本模型的食谱网站,“用户”和“食谱”
class User(models.Model):
username= models.CharField()
email = models.CharField()
class Recipe(models.Model):
name = models.CharField()
description = models.CharField()
Run Code Online (Sandbox Code Playgroud)
我想添加该功能,以便用户可以“收藏”食谱。
在这种情况下,我需要使用多对多关系。我的问题是,我如何决定将关系添加到哪个模型?
例如,每个用户都可以有一个“最喜欢的”食谱列表:
class User(models.Model):
favorites = models.ManyToManyField(Recipe)
Run Code Online (Sandbox Code Playgroud)
或者,每个食谱都可以有一个收藏该食谱的用户列表:
class Recipe(models.Model):
user_favorites = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)
什么被认为是最佳实践?任何一种对查询性能更好?
我正在开发一个单页应用程序,它将从大约十几个不同的 django 模型加载数据,允许用户操作数据,然后将所有更改保存回数据库。
我可以通过序列化查询集的结果来将 django 模型“传递”到模板。例如,我有一个模型 Person:
class Person(models.Model):
id = models.AutoField(primary_key=True)
age = models.IntegerField()
name = models.CharField(max_length=250)
Run Code Online (Sandbox Code Playgroud)
现在,在我看来,我可以通过序列化将“person”对象以 json 格式传递给模板
person_object = serializers.serialize("json", Person.objects.filter(id=1))
Run Code Online (Sandbox Code Playgroud)
然后,在我的 JavaScript 中:
var someperson = {{ data|safe }};
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够在客户端创建一个“新”人,就好像该人是一个 javascript 类而不仅仅是一个 json 对象:
var person2 = new Person(id=5,age=33m,name="john");
Run Code Online (Sandbox Code Playgroud)
有没有办法让我的 javascript“类”继承 Django 数据模型?或者我是否需要在 django 和 javascript 之间手动重新创建数据模型?
这个问题通常也适用于Vue,但是我在项目中使用Vuex。
我的商店中有一个对象数组,我想为其提供一个已计算的属性。
为了简化,假设我的商店如下:
const state = {
numbers = [
{num: 2, multiplier: 3},
{num: 5, multiplier: 10},
{num: 1, multiplier: 6}
]
};
Run Code Online (Sandbox Code Playgroud)
现在,我想要一个数字数组每个对象的计算属性,以便结果为num *乘数(例如2 * 3 = 6、5 * 10 = 50)
一种解决方案是使计算所得的属性返回数字数组,再加上计算所得的字段...例如:
const getterrs = {
num_list(state){
const list = state.numbers
list.map(n=>{
n.value=n.num*n.multiplier;
);
return list;
}
}
Run Code Online (Sandbox Code Playgroud)
可以,但是有两个问题:
返回的数组不能与非计算字段上的v-model绑定
每当数组中的任何元素发生更改时,整个数组都会被重新计算...我只想重新计算发生更改的单个元素。
Vue / Vuex有可能吗?
每当我尝试访问我的模型之一时,我都会遇到一个非常奇怪的错误。所有其他型号都工作正常。
这是我的模型的样子:
class Hop(models.Model):
name = models.CharField(max_length=100, null=True, blank=True)
aa = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True, default = 10)
b = models.DecimalField(max_digits=15, decimal_places=2, null=True, blank=True)
type = models.CharField(max_length=100, null=True, blank=True)
description = models.CharField(max_length=600, null=True, blank=True)
user_created = models.BooleanField(default=True)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
当我运行 Hop.objects.all() 时,出现以下错误。以前从未见过这个。
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 250, in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 274, in __iter__
self._fetch_all()
File "C:\Users\corym\Documents\Projects\mybrewlab vue\Backend\mybrewlabapi\env3\lib\site-packages\django\db\models\query.py", line 1242, …Run Code Online (Sandbox Code Playgroud) 我创建了一个 Google 云函数,并在权限中将“云函数调用者”角色添加到了 3 个个人用户,我希望能够触发该函数。
该函数可在提供的触发端点访问,类似于: https: //us-central1-name-of-my-app.cloudfunctions.net/function-name
我已为自己分配了该函数的调用者角色。当我输入 URL 时,我得到 403
您的客户端无权从此服务器获取 URL /函数名称。
由于我已经登录了我的 Google 帐户,因此我假设我有权访问此功能。
如果没有,如何将身份验证提示显示为函数的一部分,而不通过 allUsers 暴露整个函数?
假设我有一组记录:
{'name':'record1', 'colors':['red','green','blue']}
{'name':'record2', 'colors':['red','orange']}
{'name':'record3', 'colors':['red','yellow','blue']}
{'name':'record4', 'colors':['red','green','blue']}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法获取不同颜色的列表:
collection.distinct('colors')
#returns
['red','green','blue','orange','yellow']
Run Code Online (Sandbox Code Playgroud)
是否有可能获得这些值出现的记录的数量?
例如:
[{'count':4,'color':'red'},{'count':2,'color':'green'}]
Run Code Online (Sandbox Code Playgroud) 我正在为我的 web 应用程序开发 create() 方法,该方法使用 Django REST 框架作为后端 API。
在这种情况下,我试图创建一个新的 RECIPE,它有一个相关模型 STYLE 的外键字段...
当我尝试通过 ID 将新配方记录与现有相关对象关联时,遇到了问题。
我的序列化器看起来像这样:
class StyleSerializer(serializers.ModelSerializer):
http_method_names = ['get']
class Meta:
model = Style
exclude = ()
class RecipeSerializer(serializers.ModelSerializer):
hops = HopAdditionSerializer(many=True, read_only=True)
fermentables = FermentableAdditionSerializer(many=True, read_only=True)
style = StyleSerializer()
yeast = YeastSerializer(read_only=True)
class Meta:
model = Recipe
exclude = ()
def create(self, validated_data):
style_data = validated_data.pop('style')
style = Style.objects.get(pk=style_data.get('id'))
reipce = Recipe.objects.create(**validated_data)
recipe.style = style
recipe.save();
return recipe
Run Code Online (Sandbox Code Playgroud)
您可以看到我正在尝试为新的配方对象分配相关的样式对象。
在我对新菜谱的 POST 请求中,我包含了样式,它是所有相关属性,包括字段ID。我已经验证此信息已通过开发控制台的请求和通过终端日志的 django 视图集中发布。 …
我有两张桌子。
表 A 是发票列表,每张发票都有唯一的发票 ID。
表 B 是发票属性的列表,具有与表 A 中的发票 ID 相对应的唯一发票 ID。
我想通过在表 B 中按发票 ID 查找该值,向表 A 添加一个名为“联系人姓名”的新列。
我知道我可以通过连接 TableA 和 TableB 创建一个临时表,然后用新表替换现有表......但我很好奇是否有更好的方法来做到这一点。
我有一堆 Oracle SQL 查询,我想为其准备一些可视化模型/图表。例如,显示所有表、连接和连接条件。
存在这样的工具吗?