簡體   English   中英

Django CustomField從models.CharField繼承-意外的關鍵字參數

[英]Django CustomField inheritance from models.CharField — unexpected keyword argument

我的應用程序需要字段所需要的一些屬性,因此我繼續按照代碼創建了自定義字段

這是我的CustomCharacterField:

class CustomCharField(models.CharField):
    def __int__(self, success_order=None, *args, **kwargs):
        self.success_order = success_order
        super(CustomCharField, self).__int__( *args, **kwargs)

    def get_success_order(self):
        return int(self.success_order)


    def deconstruct(self):
        name, path, args, kwargs = super(CustomCharField, self).deconstruct()
        del kwargs["success_order"]
        return name, path, args, kwargs

這是我的models.py

class NameModel(models.Model):

     name = fields.CustomCharField(max_length=250, unique=True, success_order=1)

這是回溯:

 File "/home/kt/Documents/phc/phc/Forms/models.py", line 204, in <module>
   class SchemeModel(models.Model):
  File "/home/kt/Documents/phc/phc/Forms/models.py", line 220, in SchemeModel
    scheme_name = fields.CustomCharField(verbose_name="Scheme", max_length=250, unique=True, success_order=1)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/fields/__init__.py", line 1072, in __init__
    super(CharField, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'success_order'

我認為您在這里只是一個錯字def __int__應該是def __init__ ,而super(...).__int__(..)調用應該是super(...).__init__(..)

這是因為您傳遞參數的順序。 追溯顯示成功訂單已傳遞給CharField的構造函數,而不應該傳遞給CharField的構造函數。 這是因為它在kwargs中傳遞。 更改順序應該可以解決問題。 CharField構造函數將接受unique = True。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM