【问题标题】:Django how to check if a table is being used as a foreignkey of another tableDjango如何检查一个表是否被用作另一个表的外键
【发布时间】:2022-10-03 02:03:58
【问题描述】:

所以,我有两个模型,OrderOrders,对于我会话中的每个项目(购物车) 我正在创建一个 Order_object(保存在数据库中),并且在保存每个项目后,我想检查每个 Order,告诉哪些不是 Orders 中的外键,如果不是,则创建一个 Orders_object,而不是添加每个 @987654325 @ who 不是Orders 的外键而且我希望每个Orders 有多个Order

模型.py

class Order(models.Model):
   ----fields---

class Orders(models.Model):
 order = models.ManyToManyField(Order)

 ----other fields ------

我想做这样的事情,但我不知道它是否会起作用,有人可以确认这是否有效吗?:

注意:即使我希望测试的这段代码有效,我也没有在 Orders_object 中添加多个 Order_object,我只是创建了一个 Orders_object 包含只有一个Order_object,我该如何解决

 for order_object in Order:
   check_if_doesnt_have_foreign_key = True
   for orders in Orders:
      if orders.order == order_object
          check_if_doesnt_have_foreign_key = False
          break:
   if check_if_doesnt_have_foreign_key == True:
      orders = Orders(order=order_object)
      orders.save()

    标签: python django django-models django-views


    【解决方案1】:

    你可以做这样的事情:

    order = get_object_or_404(Order, pk=pk)
    for order_object in Order:
        if order_object.orders.exists():
           # Do something
         else:
           # Do something
    

    【讨论】:

    • 不起作用:“订单”对象没有“订单”属性
    • 订单表没有订单字段,只有订单有订单字段
    【解决方案2】:
                for order_object in order_all:
                    the_order_object_is_not_fk_in_orders = True
                    for orders in orders_all:
                        for orders_order_object in orders.order.all():
                          if orders_order_object == order_object:
                            the_order_object_is_not_fk_in_orders = False
                            break
                    if the_order_object_is_not_fk_in_orders == True:
                        #do something
    

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      相关资源
      最近更新 更多