[英]XML of Django model and models related to it
我有一個模型類Equip,它是User(我認為沒關系)和Player模型的子類。
class Team(auth.models.User):
emaile = models.EmailField('email',null=False,unique=True,)
class Player(models.Model):
name = models.CharField(max_length=50)
team = models.ForeignKey(Equip)
在意見上,我有:
class ConnegResponseMixin(TemplateResponseMixin):
def render_xml_object_response(self, objects, **kwargs):
xml_data = serializers.serialize(u"xml", objects, **kwargs)
return HttpResponse(xml_data, content_type=u"application/xml")
def render_to_response(self, context, **kwargs):
if 'extension' in self.kwargs:
try:
objects = [self.object]
except AttributeError:
objects = self.object_list
return self.render_xml_object_response(objects=objects)
else:
return super(ConnegResponseMixin, self).render_to_response(context
class teamDetail(DetailView, ConnegResponseMixin):
model = Equip
template_name = 'competition/team_detail.html'
def get_context_data(self, **kwargs):
context = super(teamDetail,self).get_context_data(**kwargs)
return context
我該如何使用xml這樣的XML:團隊:名稱:teamname電子郵件:teamemail玩家:{玩家:名稱:playername玩家2:名稱:player2name
我試圖創建一個新的類TeamXML
class TeamXML():
def __init__(self, equip):
self.username = equip.username
self.email = equip.correoe
self.isTeamValid = equip.isTeamValid
self.players = Jugador.objects.filter(team=equip)
在視圖中,我將函數render_xml_object_response更改為:
def render_xml_object_response(self, objects, **kwargs):
if objects[0].__class__ == Team:
objectA = TeamXML(objects[0])
xml_data = serializers.serialize(u"xml", objectA, **kwargs)
else:
xml_data = serializers.serialize(u"xml", objects, **kwargs)
return HttpResponse(xml_data, content_type=u"application/xml")
但是它向我返回了錯誤:“ TeamXML”對象不可迭代。 如何做可迭代的TeamXML或如何返回具有球隊和球員(例如球隊屬性)的XML。
Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
111. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in view
69. return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
87. return handler(request, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/generic/detail.py" in get
116. return self.render_to_response(context)
File "/home/eloi/Models/DjangoLoL/LoL/competition/views.py" in render_to_response
59. return self.render_xml_object_response(objects=objects)
File "/home/eloi/Models/DjangoLoL/LoL/competition/views.py" in render_xml_object_response
48. xml_data = serializers.serialize(u"xml", objectA, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/core/serializers/__init__.py" in serialize
128. s.serialize(queryset, **options)
File "/usr/local/lib/python2.7/dist-packages/django/core/serializers/base.py" in serialize
52. for obj in queryset:
Exception Type: TypeError at /team/10.xml
Exception Value: 'TeamXML' object is not iterable
謝謝,
我終於用dexml解決了。 https://pypi.python.org/pypi/dexml/
與此:Models.py
class PlayerXML(dexml.Model):
name = fields.String()
rol = fields.String()
email = fields.String()
def __init__(self, player):
self.name = player.name
self.rol = player.rol
self.email = player.email
class TeamXML(dexml.Model):
username = fields.String()
email = fields.String()
players = fields.List(Jugador)
def __init__(self, team):
self.username = team.username
self.email = team.correoe
for item in Jugador.objects.filter(team=team):
self.players.append(PlayerXML(item))
和Views.py:
team_xml = TeamXML(objects[0])
team_xml = TeamXML(objects[0])
xml_data = team_xml.render()xml_data = team_xml.render()
return HttpResponse(xml_data, content_type=u"application/xml")
謝謝您的幫助 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.