Commit a60df02c authored by 吴升宇's avatar 吴升宇

Merge branch 'test' into 'wsy2'

# Conflicts:
#   README.md
parents 344b91f2 8c74626e
...@@ -55,8 +55,10 @@ celery -A physical beat ...@@ -55,8 +55,10 @@ celery -A physical beat
### physical策略端脚本 ### physical策略端脚本
在Alp-Test-Cos-test001服务器上,通过crontab -l查看 在Alp-Test-Cos-test001服务器上,通过crontab -l查看
<<<<<<< README.md
更新脚本 更新脚本
```bash ```bash
make crontab make crontab
``` ```
...@@ -1339,7 +1339,19 @@ class TopicUtils(object): ...@@ -1339,7 +1339,19 @@ class TopicUtils(object):
} }
} }
}) })
elif k == "is_kol":
f.append({
"term": {
"user_is_kol": True
}
})
elif k == "is_edit":
f.append({
"term": {
"user_is_edit": True
}
})
# elif k == "pictorial_id": # elif k == "pictorial_id":
# f.append({ # f.append({
# "nested": { # "nested": {
......
...@@ -16,6 +16,7 @@ from trans2es.models.tag import CommunityTagSetRelation ...@@ -16,6 +16,7 @@ from trans2es.models.tag import CommunityTagSetRelation
from django.conf import settings from django.conf import settings
from libs.error import logging_exception from libs.error import logging_exception
from django.db import connection from django.db import connection
from trans2es.models.account_reg_extra import AccountRegExtra
def get_highlight(fields=[]): def get_highlight(fields=[]):
...@@ -143,6 +144,27 @@ def choice_pictorial_push_tag(device_id, user_id): ...@@ -143,6 +144,27 @@ def choice_pictorial_push_tag(device_id, user_id):
return {"pictorial_tag_list": []} return {"pictorial_tag_list": []}
@bind("physical/search/lintag_by_user_id")
def get_lintags_by_user_id(user_id):
try:
devices = AccountRegExtra.objects.filter(user_id=user_id, is_online=True, is_deleted=False).values_list("device_id", flat=True)
if devices:
linucb_recommend_redis_prefix = "physical:linucb:tag_recommend:device_id:"
device_id = devices[0]
redis_key = linucb_recommend_redis_prefix + str(device_id)
tag_data = redis_client.get(redis_key)
lintags = []
if tag_data is None:
lintags = []
else:
lintags = json.loads(str(tag_data, encoding="utf-8"))
return {"lin_tag_list": lintags[:3]}
return {"lin_tag_list": []}
except Exception as e:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"lin_tag_list": []}
@bind("physical/search/choice_push_tag") @bind("physical/search/choice_push_tag")
def choice_push_tag(device_id, user_id): def choice_push_tag(device_id, user_id):
""" """
......
...@@ -55,7 +55,7 @@ def get_discover_page_topic_ids(user_id, device_id, size, query_type=TopicPageTy ...@@ -55,7 +55,7 @@ def get_discover_page_topic_ids(user_id, device_id, size, query_type=TopicPageTy
def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, underexposure_lin_topic_count=0, size=0, query=None, def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, underexposure_lin_topic_count=0, size=0, query=None,
query_type=TopicPageType.HOME_RECOMMEND, promote_topic_list=[], disable_collpase=False, query_type=TopicPageType.HOME_RECOMMEND, promote_topic_list=[], disable_collpase=False,
usefulrecall=-1, useful_tag_list=[], has_score=False, gray_list=[]): usefulrecall=-1, useful_tag_list=[], has_score=False, gray_list=[1]):
try: try:
topic_star_routing = "6" topic_star_routing = "6"
index_type = "topic-high-star" index_type = "topic-high-star"
...@@ -276,7 +276,7 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, underexposu ...@@ -276,7 +276,7 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, underexposu
return [], [], [] return [], [], []
def get_home_recommend_pictorial_ids(user_id=-1, device_id="", size=4, gray_list=[]): def get_home_recommend_pictorial_ids(user_id=-1, device_id="", size=4, gray_list=[1]):
try: try:
if STRATEGY_TYPE.CTR_GRAY in gray_list: if STRATEGY_TYPE.CTR_GRAY in gray_list:
pictorial_recommend_redis_key = "ctr_physical:linucb:pictorial_recommend:device_id:" + str(device_id) pictorial_recommend_redis_key = "ctr_physical:linucb:pictorial_recommend:device_id:" + str(device_id)
...@@ -316,20 +316,22 @@ def get_home_recommend_pictorial_ids(user_id=-1, device_id="", size=4, gray_list ...@@ -316,20 +316,22 @@ def get_home_recommend_pictorial_ids(user_id=-1, device_id="", size=4, gray_list
return [] return []
def get_topic_and_pictorial_detail_for_debug(device_id="", linucb_topic_id_list=[], rank_topic_id_list=[], def get_topic_and_pictorial_detail_for_debug(device_id="", underexposure_lin_topic_ids=[], linucb_topic_id_list=[],
linucb_pictorial_id_list=[], rank_topic_score=[]): rank_topic_id_list=[], linucb_pictorial_id_list=[],
rank_topic_score=[], gray_list=[1]):
try: try:
linucb_tag_dict = get_device_linucb_tag(device_id, size=20, has_score=True) linucb_tag_dict = get_device_linucb_tag(device_id, size=20, has_score=True, gray_list=gray_list)
linucb_topic_results = dict() linucb_topic_results = dict()
linucb_pictorial_results = dict() linucb_pictorial_results = dict()
rank_topic_results = dict() rank_topic_results = dict()
if len(linucb_topic_id_list) > 0: linucb_topic_id_list_all = linucb_topic_id_list + underexposure_lin_topic_ids
linucb_topic_dict = TopicUtils.get_linucb_topic_info_for_debug(len(linucb_topic_id_list), underexposure_lin_topic_results = dict()
linucb_topic_list=linucb_topic_id_list) exposure_lin_topic_results = dict()
linucb_topic_results = dict() if len(linucb_topic_id_list_all) > 0:
linucb_topic_dict = TopicUtils.get_linucb_topic_info_for_debug(len(linucb_topic_id_list_all),
linucb_topic_list=linucb_topic_id_list_all)
if len(linucb_topic_dict) > 0: if len(linucb_topic_dict) > 0:
# num = 1 for topic_id in linucb_topic_id_list_all:
for topic_id in linucb_topic_id_list:
topic_id = topic_id topic_id = topic_id
edit_tag_List = linucb_topic_dict[topic_id]['edit_tag_list'] edit_tag_List = linucb_topic_dict[topic_id]['edit_tag_list']
content_level = linucb_topic_dict[topic_id]['content_level'] content_level = linucb_topic_dict[topic_id]['content_level']
...@@ -345,27 +347,25 @@ def get_topic_and_pictorial_detail_for_debug(device_id="", linucb_topic_id_list= ...@@ -345,27 +347,25 @@ def get_topic_and_pictorial_detail_for_debug(device_id="", linucb_topic_id_list=
{"id": edit_tag, "score": 0, "name": edit_tag_List_dict[edit_tag]}) {"id": edit_tag, "score": 0, "name": edit_tag_List_dict[edit_tag]})
linucb_topic_results.update({str(topic_id): {"id": topic_id, "content_level": content_level, linucb_topic_results.update({str(topic_id): {"id": topic_id, "content_level": content_level,
"edit_tags": edit_tag_name_score_list}}) "edit_tags": edit_tag_name_score_list}})
logging.info("linucb_topic:{}".format(linucb_topic_results)) # logging.info("linucb_topic:{}".format(linucb_topic_results))
# num += 1 underexposure_lin_topic_results = {k: v for k, v in linucb_topic_results.items() if
int(k) in underexposure_lin_topic_ids}
exposure_lin_topic_results = {k: v for k, v in linucb_topic_results.items() if
int(k) in linucb_topic_id_list}
if len(rank_topic_id_list) > 0: if len(rank_topic_id_list) > 0:
rank_topic_dict = TopicUtils.get_linucb_topic_info_for_debug(len(rank_topic_id_list), rank_topic_dict = TopicUtils.get_linucb_topic_info_for_debug(len(rank_topic_id_list),
linucb_topic_list=rank_topic_id_list) linucb_topic_list=rank_topic_id_list)
rank_topic_results = dict()
if len(rank_topic_dict) > 0: if len(rank_topic_dict) > 0:
# num = 1
for i in range(len(rank_topic_id_list)): for i in range(len(rank_topic_id_list)):
topic_id = rank_topic_id_list[i] topic_id = rank_topic_id_list[i]
score = rank_topic_score[i] score = rank_topic_score[i]
rank_topic_results.update({str(topic_id): {"id": topic_id, "rank": score}}) rank_topic_results.update({str(topic_id): {"id": topic_id, "rank": score}})
# num += 1 # logging.info("rank_topic:{}".format(rank_topic_results))
logging.info("rank_topic:{}".format(rank_topic_results))
if len(linucb_pictorial_id_list) > 0: if len(linucb_pictorial_id_list) > 0:
if len(linucb_pictorial_id_list) > 0: if len(linucb_pictorial_id_list) > 0:
linucb_pictorial_dict = TopicUtils.get_linucb_pictorial_info_for_debug(len(linucb_pictorial_id_list), linucb_pictorial_dict = TopicUtils.get_linucb_pictorial_info_for_debug(len(linucb_pictorial_id_list),
linucb_pictorial_list=linucb_pictorial_id_list) linucb_pictorial_list=linucb_pictorial_id_list)
linucb_pictorial_results = dict()
if len(linucb_pictorial_dict) > 0: if len(linucb_pictorial_dict) > 0:
# num = 1
for pictorial_id in linucb_pictorial_id_list: for pictorial_id in linucb_pictorial_id_list:
pictorial_id = pictorial_id pictorial_id = pictorial_id
edit_tag_List = linucb_pictorial_dict[pictorial_id]['edit_tag_list'] edit_tag_List = linucb_pictorial_dict[pictorial_id]['edit_tag_list']
...@@ -381,15 +381,15 @@ def get_topic_and_pictorial_detail_for_debug(device_id="", linucb_topic_id_list= ...@@ -381,15 +381,15 @@ def get_topic_and_pictorial_detail_for_debug(device_id="", linucb_topic_id_list=
{"id": edit_tag, "score": 0, "name": edit_tag_List_dict[edit_tag]}) {"id": edit_tag, "score": 0, "name": edit_tag_List_dict[edit_tag]})
linucb_pictorial_results.update({str(pictorial_id): {"id": pictorial_id, linucb_pictorial_results.update({str(pictorial_id): {"id": pictorial_id,
"edit_tags": edit_tag_name_score_list}}) "edit_tags": edit_tag_name_score_list}})
logging.info("linucb_pictorial:{}".format(linucb_pictorial_results)) # logging.info("linucb_pictorial:{}".format(linucb_pictorial_results))
# num += 1 result = {"underexposure_lin_topic": underexposure_lin_topic_results,
result = {"linucb_topic": linucb_topic_results, "rank_topic": rank_topic_results, "exposure_lin_topic": exposure_lin_topic_results, "rank_topic": rank_topic_results,
"linucb_pictorial": linucb_pictorial_results} "linucb_pictorial": linucb_pictorial_results}
logging.info("get_topic_and_pictorial_detail_for_debug:result:{}:device_id:{}".format(result, device_id)) logging.info("get_topic_and_pictorial_detail_for_debug:result:{}:device_id:{}".format(result, device_id))
return result return result
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"linucb_topic": {}, "rank_topic": {}, "linucb_pictorial": {}} return {"underexposure_lin_topic": {}, "exposure_lin_topic": {}, "rank_topic": {}, "linucb_pictorial": {}}
@bind("physical/search/query_tag_id_by_topic") @bind("physical/search/query_tag_id_by_topic")
...@@ -403,7 +403,7 @@ def query_tag_id_by_topic(offset=0, size=10, topic_id_list=[], user_id=-1): ...@@ -403,7 +403,7 @@ def query_tag_id_by_topic(offset=0, size=10, topic_id_list=[], user_id=-1):
@bind("physical/search/home_recommend") @bind("physical/search/home_recommend")
def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_count =4, lin_pictorial_count=4, size=10, query_type=TopicPageType.HOME_RECOMMEND, def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_count =4, lin_pictorial_count=4, size=10, query_type=TopicPageType.HOME_RECOMMEND,
promote_topic_list=[], usefulrecall=-1, useful_tag_list=[], is_debug=False,gray_list=[]): promote_topic_list=[], usefulrecall=-1, useful_tag_list=[], is_debug=False,gray_list=[1]):
""" """
:remark:首页推荐,目前只推荐日记 :remark:首页推荐,目前只推荐日记
:param session_id: :param session_id:
...@@ -477,8 +477,8 @@ def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_c ...@@ -477,8 +477,8 @@ def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_c
return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids, return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids,
"useful_topic_ids": useful_topic_ids, "linucb_pictorial_ids": recommend_pictorial_ids} "useful_topic_ids": useful_topic_ids, "linucb_pictorial_ids": recommend_pictorial_ids}
else: else:
results = get_topic_and_pictorial_detail_for_debug(device_id, recommend_topic_ids, rank_topic_ids, results = get_topic_and_pictorial_detail_for_debug(device_id, underexposure_lin_topic_ids, recommend_topic_ids, rank_topic_ids,
recommend_pictorial_ids, rank_topic_score) recommend_pictorial_ids, rank_topic_score, gray_list)
return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids, return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids,
"useful_topic_ids": useful_topic_ids, "linucb_pictorial_ids": recommend_pictorial_ids, "useful_topic_ids": useful_topic_ids, "linucb_pictorial_ids": recommend_pictorial_ids,
"debug_model_data": results} "debug_model_data": results}
...@@ -515,8 +515,8 @@ def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_c ...@@ -515,8 +515,8 @@ def home_recommend(device_id="", user_id=-1, offset=0, underexposure_lin_topic_c
return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids, return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids,
"linucb_pictorial_ids": recommend_pictorial_ids} "linucb_pictorial_ids": recommend_pictorial_ids}
else: else:
results = get_topic_and_pictorial_detail_for_debug(device_id, recommend_topic_ids, rank_topic_ids, results = get_topic_and_pictorial_detail_for_debug(device_id, underexposure_lin_topic_ids, recommend_topic_ids, rank_topic_ids,
recommend_pictorial_ids, rank_topic_score) recommend_pictorial_ids, rank_topic_score, gray_list)
return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids, return {"underexposure_lin_topic_ids": underexposure_lin_topic_ids, "linucb_topic_ids": recommend_topic_ids, "rank_topic_ids": rank_topic_ids,
"linucb_pictorial_ids": recommend_pictorial_ids, "debug_model_data": results} "linucb_pictorial_ids": recommend_pictorial_ids, "debug_model_data": results}
except: except:
...@@ -806,11 +806,11 @@ def clear_history(device_id=None, user_id=-1): ...@@ -806,11 +806,11 @@ def clear_history(device_id=None, user_id=-1):
msg = list() msg = list()
redis_key_list = list() redis_key_list = list()
if device_id: if device_id:
redis_key_list.extend(('physical:linucb:device_id:%s', 'physical:home_recommend:device_id:%s:query_type:1', redis_key_list.extend(('physical:linucb:device_id:%s', 'ctr_physical:linucb:device_id:%s',
'physical:linucb:tag_recommend:device_id:%s', 'physical:linucb:tag_recommend:device_id:%s', 'ctr_physical:linucb:tag_recommend:device_id:%s',
'physical:linucb:topic_recommend:device_id:%s', 'physical:linucb:topic_recommend:device_id:%s', 'ctr_physical:linucb:topic_recommend:device_id:%s',
'physical:linucb:pictorial_recommend:device_id:%s', 'physical:linucb:pictorial_recommend:device_id:%s', 'ctr_physical:linucb:pictorial_recommend:device_id:%s',
'physical:home_pictorial_recommend:device_id:%s:query_type:1')) 'physical:home_recommend:device_id:%s:query_type:1', 'physical:home_pictorial_recommend:device_id:%s:query_type:1'))
for redis_key in redis_key_list: for redis_key in redis_key_list:
key = redis_key % device_id key = redis_key % device_id
if redis_client.type(key) != "b'none'": if redis_client.type(key) != "b'none'":
...@@ -830,37 +830,13 @@ def clear_history(device_id=None, user_id=-1): ...@@ -830,37 +830,13 @@ def clear_history(device_id=None, user_id=-1):
return ['fail'] return ['fail']
@bind("physical/search/home_recommend_debug") def get_device_linucb_tag(device_id=None, size=20, has_score=False, gray_list=[1]):
def home_recommend_debug(device_id="", user_id=-1, recommend_topic_ids=[], rank_topic_ids=[],
recommend_pictorial_ids=[]):
"""
:remark:首页推荐,目前只推荐日记
:param session_id:
:param user_id:
:param offset:
:param size:
:return:
"""
try:
if device_id:
results = get_topic_and_pictorial_detail_for_debug(device_id, recommend_topic_ids, rank_topic_ids,
recommend_pictorial_ids)
return results
else:
return {}
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {}
def get_device_linucb_tag(device_id=None, size=20, has_score=False):
# {
# "lincub": [{"id": 1, "name": 名字}, {"id": 2, "name": 名字}, {"id": 3, "name": 名字}, {"id": 5, "name": 名字},
# {"id": 6, "name": 名字}, ]
# }
try: try:
user_feature = [1, 1] user_feature = [1, 1]
if device_id: if device_id:
if STRATEGY_TYPE.CTR_GRAY in gray_list:
linucb_matrix_redis_prefix = "ctr_physical:linucb:device_id:"
else:
linucb_matrix_redis_prefix = "physical:linucb:device_id:" linucb_matrix_redis_prefix = "physical:linucb:device_id:"
redis_key = linucb_matrix_redis_prefix + str(device_id) redis_key = linucb_matrix_redis_prefix + str(device_id)
redis_linucb_tag_data_dict = redis_client.hgetall(redis_key) redis_linucb_tag_data_dict = redis_client.hgetall(redis_key)
...@@ -875,7 +851,7 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False): ...@@ -875,7 +851,7 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False):
linucb_tag_dict_list = list() linucb_tag_dict_list = list()
linucb_tag_dict = dict() linucb_tag_dict = dict()
part_recommend_tag_list = recommend_tag_list[0:size] part_recommend_tag_list = recommend_tag_list[0:size]
tag_query_results = Tag.objects.using(settings.SLAVE_DB_NAME).filter( tag_query_results = Tag.objects.using(settings.SLAVE1_DB_NAME).filter(
id__in=part_recommend_tag_list, is_online=True, is_deleted=False).values_list("id", "name") id__in=part_recommend_tag_list, is_online=True, is_deleted=False).values_list("id", "name")
if has_score: if has_score:
for id, name in tag_query_results: for id, name in tag_query_results:
...@@ -885,7 +861,6 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False): ...@@ -885,7 +861,6 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False):
for id, name in tag_query_results: for id, name in tag_query_results:
linucb_tag_dict_list.append({"id": id, "name": name}) linucb_tag_dict_list.append({"id": id, "name": name})
return linucb_tag_dict_list return linucb_tag_dict_list
else: else:
return {"linucb": []} return {"linucb": []}
except: except:
...@@ -894,7 +869,7 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False): ...@@ -894,7 +869,7 @@ def get_device_linucb_tag(device_id=None, size=20, has_score=False):
def get_edit_tag_name(tag_lst): def get_edit_tag_name(tag_lst):
try: try:
tag_query_results = Tag.objects.using(settings.SLAVE_DB_NAME).filter( tag_query_results = Tag.objects.using(settings.SLAVE1_DB_NAME).filter(
id__in=tag_lst, is_online=True, is_deleted=False).values_list("id", "name") id__in=tag_lst, is_online=True, is_deleted=False).values_list("id", "name")
tag_dict = dict() tag_dict = dict()
for id, name in tag_query_results: for id, name in tag_query_results:
...@@ -905,14 +880,13 @@ def get_edit_tag_name(tag_lst): ...@@ -905,14 +880,13 @@ def get_edit_tag_name(tag_lst):
@bind("physical/search/device_linucb_tag_debug") @bind("physical/search/device_linucb_tag_debug")
def get_device_linucb_tag2(device_id=None, size=20, has_score=False): def get_device_linucb_tag2(device_id=None, size=20, has_score=False, gray_list=[1]):
# {
# "lincub": [{"id": 1, "name": 名字}, {"id": 2, "name": 名字}, {"id": 3, "name": 名字}, {"id": 5, "name": 名字},
# {"id": 6, "name": 名字}, ]
# }
try: try:
user_feature = [1, 1] user_feature = [1, 1]
if device_id: if device_id:
if STRATEGY_TYPE.CTR_GRAY in gray_list:
linucb_matrix_redis_prefix = "ctr_physical:linucb:device_id:"
else:
linucb_matrix_redis_prefix = "physical:linucb:device_id:" linucb_matrix_redis_prefix = "physical:linucb:device_id:"
redis_key = linucb_matrix_redis_prefix + str(device_id) redis_key = linucb_matrix_redis_prefix + str(device_id)
redis_linucb_tag_data_dict = redis_client.hgetall(redis_key) redis_linucb_tag_data_dict = redis_client.hgetall(redis_key)
...@@ -927,7 +901,7 @@ def get_device_linucb_tag2(device_id=None, size=20, has_score=False): ...@@ -927,7 +901,7 @@ def get_device_linucb_tag2(device_id=None, size=20, has_score=False):
linucb_tag_dict_list = list() linucb_tag_dict_list = list()
linucb_tag_dict = dict() linucb_tag_dict = dict()
part_recommend_tag_list = recommend_tag_list[0:size] part_recommend_tag_list = recommend_tag_list[0:size]
tag_query_results = Tag.objects.using(settings.SLAVE_DB_NAME).filter( tag_query_results = Tag.objects.using(settings.SLAVE1_DB_NAME).filter(
id__in=part_recommend_tag_list, is_online=True, is_deleted=False).values_list("id", "name") id__in=part_recommend_tag_list, is_online=True, is_deleted=False).values_list("id", "name")
if has_score: if has_score:
result_lst = [] result_lst = []
......
...@@ -14,3 +14,5 @@ from .user import User ...@@ -14,3 +14,5 @@ from .user import User
from .group import Group from .group import Group
from .pictorial import PictorialFollow from .pictorial import PictorialFollow
from .pictorial import Pictorial from .pictorial import Pictorial
from .account_reg_extra import AccountRegExtra
import datetime
from django.db import models
class AccountRegExtra(models.Model):
class Meta:
verbose_name = u"设备用户关系表"
db_table = "account_reg_extra"
id = models.IntegerField(verbose_name="主键ID", primary_key=True)
is_online = models.BooleanField(verbose_name=u"是否上线")
create_time = models.DateTimeField(verbose_name=u"创建时间", default=datetime.datetime.fromtimestamp(0))
update_time = models.DateTimeField(verbose_name=u"更新时间", default=datetime.datetime.fromtimestamp(0))
is_deleted = models.BooleanField(verbose_name=u"")
geo = models.CharField(verbose_name=u"", max_length=300)
model = models.CharField(verbose_name=u"", max_length=64)
device_id = models.CharField(verbose_name=u"设备ID", max_length=64)
share_code = models.CharField(verbose_name=u"", max_length=64)
user_id = models.IntegerField(verbose_name="用户ID")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment