2013-02-20 14 views
1

我有兩個型號OrderOrderitem Order收集了客戶的信息並跟蹤其狀態的客戶訂單是英寸應該如何創建在Django更好的模式

class Order(SmartModel): 
    #each individual status 
    SUBMITTED = 1 # the credit card was valid or mobilemoney was recieved.It is ready for us to process the order 
    PROCESSED = 2 # After submitted orders are reviewed, we can mark them as processed, letting deliverers know order is ready to be shipped 
    DELIVERED = 3 # the order has been processed and approved by the adminstrator(in this case us), it can delivered. 
    CANCELLED = 4 # Customer called the company and decided they didnt want to go through with the order either by phone or email. 

    # SET OF POSSIBLE STATUSES 
    ORDER_STATUSES = ((SUBMITTED,'Submitted'),(PROCESSED,'Processed'),(DELIVERED,'Delivered'),(CANCELLED,'Cancelled'),) 
    #Order info 
    date = models.DateTimeField(auto_now_add=True) 
    status = models.IntegerField(choices=ORDER_STATUSES, default=SUBMITTED) 
    last_updated = models.DateTimeField(auto_now=True) 
# transaction_id = models.CharField(max_length=20) 

    #contact info 
    email = models.EmailField(max_length=50) 
    phone = PhoneNumberField(max_length=20,default='+250785559899') 

    #delivery information 
    delivery_name = models.CharField(max_length=50) 
    delivery_city = models.CharField(max_length = 50) 
    delivery_address = models.CharField(max_length=50,help_text="e.g Klab 6th floor,Telecomhouse,Kacyiru") 
    restaurant = models.ForeignKey(Restaurant,default='1') 

OrderItem另持有的項目,並數量

class OrderItem(SmartModel): 
    shopping_id = models.CharField(max_length=50,db_index=True) 
    quantity = models.IntegerField(default=0) 
    item = models.ForeignKey(Item) 
    order = models.ForeignKey(Order) 

正在創建類似的模型。

try: 
    order= Order.objects.get(pk=order_id) 
    restaurant = Restaurant.objects.get(pk=restaurant_id) 
except: 
    order = Order(created_by=anon_user,modified_by=anon_user) 
    order.save() 
    oi=OrderItem(order=order,shopping_id=_shopping_id(request), 
              quantity=quantity, 
              item=i, 
              created_by=anon_user, 
              modified_by=anon_user) 
    oi.save() 

現在,你在OrderItem看到,我有一個外鍵order,這是因爲我希望能有一個具有訂單項目,其數量和Order細節的模型。但這是行不通的,我得到一個沒有類型的錯誤,coercing to Unicode: need string or buffer, NoneType found

我需要幫助瞭解如何使這項工作。

Traceback: 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    136.      response = response.render() 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/response.py" in render 
    104.    self._set_content(self.rendered_content) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/response.py" in rendered_content 
    81.   content = template.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    140.    return self._render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render 
    62.  return self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render 
    62.  return self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render 
    62.  return self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render 
    62.  return self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    123.   return compiled_parent._render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/test/utils.py" in instrumented_test_render 
    62.  return self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/loader_tags.py" in render 
    62.    result = block.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    185.       nodelist.append(node.render(context)) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    1202.      return self.nodelist.render(new_context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    476.   output = self.nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    281.     return nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/defaulttags.py" in render 
    281.     return nodelist.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/base.py" in render 
    823.     bit = self.render_node(node, context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render_node 
    74.    return node.render(context) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/template/debug.py" in render 
    87.    output = force_unicode(output) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/utils/encoding.py" in force_unicode 
    71.     s = unicode(s) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/forms.py" in __unicode__ 
    411.   return self.as_widget() 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/forms.py" in as_widget 
    458.   return widget.render(name, self.value(), attrs=attrs) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/widgets.py" in render 
    547.   options = self.render_options(choices, [value]) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/widgets.py" in render_options 
    570.   for option_value, option_label in chain(self.choices, choices): 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/models.py" in __iter__ 
    897.     yield self.choice(obj) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/models.py" in choice 
    903.   return (self.field.prepare_value(obj), self.field.label_from_instance(obj)) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/forms/models.py" in label_from_instance 
    954.   return smart_unicode(obj) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/utils/encoding.py" in smart_unicode 
    39.  return force_unicode(s, encoding, strings_only, errors) 
File "/home/mats-invasion/projects/f4l/env/local/lib/python2.7/site-packages/django/utils/encoding.py" in force_unicode 
    71.     s = unicode(s) 

Exception Type: TypeError at /incoming_orders/orderitem/create/ 
Exception Value: coercing to Unicode: need string or buffer, NoneType found 
+0

我想你會需要包括一些追溯信息。你在哪裏得到錯誤?它發生什麼? – 2013-02-20 21:20:45

+0

它與管理類實用工具smartmin,[https://github.com/nyaruka/smartmin] – 2013-02-20 21:24:27

回答

0

首先,你應該總是調試代碼,找到的地方它發源於錯誤。

我覺得有些問題,在此線路鋪設:

order = Order(created_by=anon_user,modified_by=anon_user) 
order.save() 

因爲你嘗試創建和保存模型實例,而所有必填字段(例如電子郵件字段)

+0

謝謝我正在調查。 – 2013-02-22 09:39:10

相關問題