簡體   English   中英

為了在django中為管理站點提供自定義字符串表示形式,我需要在模型或字段中重寫什么?

[英]What do i need to override in a Model or Field in order to have a custom string representation for the admin site in django?

我使用自定義dict字段作為模型的主鍵:

class Data(models.Model):
    _id = DictField(default={}, primary_key=True, db_column='_id')

如果我想編輯一個對象,我會得到這個鏈接:

http://localhost:8000/admin/managerapp/data/OrderedDict(%5B('key1',%20'value1'),%20('key2',%20'value2')%5D)/change/

這可能意味着DictField編寫得不太好,因為django不知道如何序列化它。

我需要重寫Data或DictField以及什么方法才能告訴django如何將dict {'key1': 'value1', 'key2': 'value2'}轉換為字符串,以及如何轉換該字符串重新回到字典?

我不太擅長Django內部,也不知道要搜索哪些關鍵字。

過了一會兒想通了。 我需要重寫DictField:

class MyDict(models.DictField):
    def to_python(self, value):
        # string to dict

    def from_db_value(self, value, *args):
        # dict to string

    def get_db_prep_save(self, value, connection):
        # just in case you need more checks
        return super(MyDict, self).get_db_prep_save(value, connection)

class Data(models.Model):
    _id = MyDict(default={}, primary_key=True, db_column='_id')

暫無
暫無

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

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