[英]500 error when returning Django object with Pyamf to Flex
我能夠返回只有CharFields / Dates / Integers的Django模型,但是現在我試圖返回具有ForeignKey屬性的模型,並且在NetStatusEvent.NET_STATUS onError事件處理程序的Flex中遇到此錯誤:
m_info Object (@16491fe9)
code "NetConnection.Call.Failed"
description "HTTP: Status 500"
details "http://127.0.0.1:8000/gateway/"
level "error"
以下是models.py中重要的模型:
class RewardActBase(models.Model):
user = models.ForeignKey(User)
start_date = models.DateTimeField(blank=True, null=True)
progress_value = models.IntegerField(default=0)
coupon_act = models.ForeignKey(CouponAct)
class Meta:
abstract = True
class ChallengeAct(RewardActBase):
challenge = models.ForeignKey(Challenge)
def __unicode__(self):
return self.challenge.title'
class CouponAct(models.Model):
coupon = models.ForeignKey(Coupon)
earned_date = models.DateTimeField(blank=True, null=True)
redeemed_date = models.DateTimeField(blank=True, null=True)
expiration_date = models.DateTimeField(blank=True, null=True)
def __unicode__(self):
return self.coupon.title
然后,當我想通過pyamf檢索這些對象時,這就是我正在使用的方法,這給了我上面列出的錯誤:
@login_required
def get_challenge_act(http_request, location_id):
user = http_request.user
c = ChallengeAct();
c.challenge = Challenge.objects.select_related().get(id=1)
c.start_date = datetime.now()
c.progress_value = 1
c.user = user
new_coupon_act = CouponAct()
new_coupon_act.coupon = Coupon.objects.select_related().get(id=c.challenge.coupon.id)
new_coupon_act.earned_date = datetime.now()
new_coupon_act.save()
c.coupon_act = new_coupon_act
c.save()
return c
有趣的是,如果更改get_challenge_act方法以返回ChallengeAct對象的屬性,則不會收到錯誤。 因此,我可以返回屬於ChallengeAct的屬性或對象,但不能返回ChallengeAct本身的屬性或對象。 例如,以下代碼返回沒有錯誤的Challenge對象:
return c.challenge
如此看來,返回以foreginkey模型作為屬性的Django模型有一些問題嗎? 難道我做錯了什么?
通過消除過程,我發現是引起問題的原因是ChallengeAct上的User對象,通過將用戶對象保存后設置為None,並在返回之前將其設置為None,我消除了模棱兩可的500錯誤。
@login_required
def get_challenge_act(http_request, location_id):
user = http_request.user
c = ChallengeAct();
c.challenge = Challenge.objects.select_related().get(id=1)
c.start_date = datetime.now()
c.progress_value = 1
c.user = user
new_coupon_act = CouponAct()
new_coupon_act.coupon = Coupon.objects.select_related().get(id=c.challenge.coupon.id)
new_coupon_act.earned_date = datetime.now()
new_coupon_act.save()
c.coupon_act = new_coupon_act
c.save()
c.user = None
return c
我很想聽聽為什么會這樣。 有人有想法么?
--update--運行runserver命令后,通過查看終端日志,我發現實際的500錯誤是什么。 因此,實際錯誤是:
Could not import "cpyamf.amf3": Disallowed C-extension or built-in module
我不確定這是什么,或者為什么我只在嘗試在返回結果中包括用戶對象時才得到它,但是現在我不能只包含用戶對象以避免錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.