gpt4 book ai didi

python - 是否检查相关对象

转载 作者:行者123 更新时间:2023-11-29 13:13:04 25 4
gpt4 key购买 nike

我需要检查我的对象是否相关ORM postgresql/

我有两个对象 ItemVariationValue 和 ItemVariation 我需要检查ItemVariationValueItemVariation

有关系

模型.py

class ItemVariation(models.Model):
item=models.ForeignKey(Item,on_delete=models.CASCADE)
price=models.IntegerField(blank=True,null=True,default=0)
item_code=models.CharField(max_length=500)
keywords= models.ManyToManyField(Keyword)
image=models.ImageField(upload_to='dishes/', blank=True, null=True)
def __str__(self):
return str(self.id)

class ItemVariationValue(models.Model):
item=models.ForeignKey(Item,on_delete=models.CASCADE)
item_variation=models.ForeignKey(ItemVariation,on_delete=models.CASCADE)
attribute=models.ForeignKey(Attribute,on_delete=models.CASCADE)
attribute_value=models.ForeignKey(AttributeValue,on_delete=models.CASCADE)
def __str__(self):
return str(self.id)

views.py

def get_items(request):    # request= {"order_details": "varxxx:1"}
order=request.data['order_details']
items = order.split(',')
total = 0
for item in items:
od = item.split(':')
sku = str(od[0])
qty = int(od[1])
itemvariation=ItemVariation.objects.get(item_code=sku)



# if ItemVariationValue.item_variation has ForeignKey(ItemVariation):

最佳答案

Note (ForeignKey nomenclature): ForeignKeys should not have an _id suffix, since Django will automatically construct an extra field fieldname_id that contains the primary key. By writing an _id suffix, you will introduce extra attributes like item_variation_id_id. Although strictly speaking that is not a problem, it introduces a lot of confusion. For example my_itemvariationvalue.itemvariation_id will result in an ItemVariation object, etc.

如果您修复了 ForeignKey 名称,您可以这样检查:

# given the ForeignKey is named itemvariation, not itemvariation_id and use Comparison Operators 

if my_itemvariationvalue.itemvariation_id == my_itemvariation.id:
# ... (objects are related)
else:
# ... (otherwise)

通过在此处使用 itemvariation_id,我们避免加载相关对象,从而避免潜在的额外数据库查询。

关于python - 是否检查相关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52423510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com