首页 > 解决方案 > 参数 on_delete 的多个值

问题描述

当我运行此代码时,我收到一个类似于下面文本的错误,实际上我不知道如何修复它,因为我是新手,这里的某个人必须知道如何解决这个问题,正在关注 YouTube 上的教程和开始做一些我自己的改变。

文件“C:\Users\kristian\webdevelopment\websida\ecommerce\store\models.py”,第 131 行,在 OrderItem
product = models.ForeignKey(Product_main, Product_Diverse, Product_Teknikprylar, Product_Verktyg, Product_Maskiner, Product_Guldfynd, on_delete=models.SET_NULL , blank=True, null=True)
TypeError: init () got multiple values for argument 'on_delete'

class Product_Diverse(models.Model):
    name = models.CharField(max_length=100, null=True)
    price = models.FloatField()
    digital = models.BooleanField(default=False, null=True, blank=False)
    image = models.ImageField(null=True, blank=True)

    def __str__(self):
        return self.name

    @property
    def imageURL(self):
        try:
            url = self.image.url
        except:
            url = ''
        return url




class Order(models.Model):
    customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
    date_order = models.DateTimeField(auto_now_add=True)
    complete = models.BooleanField(default=False, null=True, blank=False)
    transaction_id = models.CharField(max_length=200, null=True)

    def __str__(self):
        return str(self.id)

class OrderItem(models.Model):
    product = models.ForeignKey(Product_main, Product_Diverse, Product_Teknikprylar, Product_Verktyg, Product_Maskiner, Product_Guldfynd, on_delete=models.SET_NULL, blank=True, null=True)
    order = models.ForeignKey(Order, on_delete=models.SET_NULL, blank=True, null=True)
    quantity = models.IntegerField(default=0, null=True, blank=True)
    date_added = models.DateTimeField(auto_now_add=True)

标签: pythondjango

解决方案


对象 [GitHub]构造函数ForeignKey定义为:

    def __init__(self, to, on_delete, related_name=None, related_query_name=None,
                 limit_choices_to=None, parent_link=False, to_field=None,
                 db_constraint=True, **kwargs):

所以第二个位置参数是on_delete,第三个位置参数是related_name,等等。

如果你写:

    product = models.ForeignKey(
        Product_main,          # to
        Product_Diverse,       # on_delete
        Product_Teknikprylar,  # related_name
        Product_Verktyg,       # related_query_name
        Product_Maskiner,      # limit_choices_to
        Product_Guldfynd,      # parent_link
        on_delete=models.SET_NULL,
        blank=True,
        null=True
    )

on_delete因此,您可以传递诸如等参数的值。而不是 aForeignKey可以引用的其他内容。

AForeignKey不能引用多个模型。AForeignKey只能指一个模型。您可能想要创建一个父模型Product并使用模型继承[Django-doc]。如果需要,您也可以使用泛型关系[Django-doc],但有几个缺点(如引用完整性)。


推荐阅读