[英]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.