当我们将 ORM 与某些使用外键的模型一起使用时,我对 Django 如何处理 '_id' 属性感到有些困惑。例如:
class CartItem(models.Model):
user = models.ForeignKey('accounts.CustomUser', related_name='carts', on_delete=models.CASCADE, verbose_name='User')
product = models.ForeignKey('pizza.Product', related_name='carts', on_delete=models.CASCADE, verbose_name=_('Product'))
quantity = models.SmallIntegerField(verbose_name=_('Quantity'))
Run Code Online (Sandbox Code Playgroud)
当我将 ORM 与“过滤器”一起使用时,我可以轻松使用以下内容:
CartItem.objects.filter(user=1, product=1, quantity=1)
Run Code Online (Sandbox Code Playgroud)
Django 有点“看到”,我指的是“id”,但是当我使用完全相同的代码行,但使用“创建”而不是“过滤器”时:
CartItem.objects.create(user=1, product=1, quantity=1)
Run Code Online (Sandbox Code Playgroud)
然后它抛出一个错误说:
无法分配“1”:“CartItem.user”必须是“CustomUser”实例。
要创建它,我需要使用:
CartItem.objects.create(user_id=1, product_id=1, quantity=1)
Run Code Online (Sandbox Code Playgroud)
这是为什么?这里有什么我不明白的规则吗?
当用户选择某个选项时,我试图更改背景颜色。我用 onchange 函数做到了,它只包含:
function colorSameValues(select, color){
for (var i=0; i<selects.length; i++){
if (selects[i].value ==='') selects[i].style.backgroundColor='';
if (selects[i].value === select.value) selects[i].style.backgroundColor=color;
}
}
Run Code Online (Sandbox Code Playgroud)
但它会改变所有选项的背景颜色。
我还在互联网上看到如何更改所选选项的颜色,但它不会更改显示的选项,就像这里(第一个响应) - Change the color of an option when selected - JavaScript
我想对显示的选项进行着色,当用户单击此选择以查看其他选项时,我希望它们根本不着色。有任何想法吗?