У меня есть установка https://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin#usage
Но как я добавляю сценарии и запускаю их?
Это должно создать фактический dict? Вы могли обойтись только чем-то, что было похоже на dict?
class DictModelAdaptor():
def __init__(self, model):
self.model = model
def __getitem__(self, key):
return self.model.objects.get(key=key)
def __setitem__(self, key, item):
pair = self.model()
pair.key = key
pair.value = item
pair.save()
def __contains__(self, key):
...
Вы могли затем перенести модель таким образом:
modelDict = DictModelAdaptor(DictModel)
modelDict["name"] = "Bob Jones"
и т.д...
Вы хотите in_bulk
метод queryset, который, согласно документам:
Берет список первичного ключа, оценивает и возвращается, словарь, отображающий каждый первичный ключ, оценивают экземпляру объекта с данным идентификатором.
Это берет список идентификаторов, таким образом, необходимо будет получить это сначала через values_list
метод:
ids = MyModel.objects.values_list('id', flat=True)
model_dict = MyModel.objects.in_bulk(ids)
Можно использовать python
сериализатор:
from django.core import serializers
data = serializers.serialize('python', DictModel.objects.all())
использовать
dict(((m.key, m.value) for m in DictModel.objects.all())
Как предложил Tom Leys, мы не должны получать целый объект, мы можем получить только те значения, в которых мы нуждаемся, например.
dict(((m['key'], m['value']) for m in DictModel.objects.values('key', 'value')))
и если Вам нужны все значения, лучше сохранить целый объект в dict, например.
dict(((m.key, m) for m in DictModel.objects.all())
Можно также полагаться на код django, уже записанный ;).
from django.forms.models import model_to_dict
model_to_dict(instance, fields=[], exclude=[])
dict((x.name, getattr(o, x.name)) for x in o._meta.fields)
Возможно, я пропускаю что-то, но объекты Django имеют __dict__
атрибут, который кажется быть тем, что Вы хотите.
Или были Вы пытающийся сделать что-то как:
def someview(req):
models = MyModel.objects.all()
toTuple = lambda field: (getattr(field, 'someatt'), getattr(field, 'someotheratt'))
data = dict(map(toTuple,models))
return render_to_response(template, data)
Для получения карты всех экземпляров в queryset в единственный словарь с указанным образцовым полем как ключ попытайтесь делать это
from django.forms.models import model_to_dict
from myApp.models import myModel
allObjs = myModel.objects.all()
f = {} # initialise the output
key = 'key' # one of the fields from myModel
[f.update({x[key]: x}) for x in [model_to_dict(y) for y in allObjs]]
return f
Для получения значений модели в словарь добавьте ниже кода в месте, где u нужен тот словарь
from models import DictModel
activity_map = dict(Plan.objects.values_list('key', 'value'))
, activity_map является словарем, который содержит запрошенную информацию.
user = mymodel.objects.all()
user.values()
можно также попробовать
user.values_list() # getting as list
(На → щелчка правой кнопкой панели, 'Добавьте Новый Объект' → 'Универсальный Монитор') Затем Вы просто связываетесь с желаемым сценарием через 'команду' в свойствах объекта GenMon. К вашему сведению genmon короток для Универсального Монитора. следуйте за использованием: https://goodies.xfce.org/projects/panel-plugins/xfce4-genmon-plugin#usage